CN115658326B - 用于管理存储空间的装置及方法、计算设备、芯片 - Google Patents
用于管理存储空间的装置及方法、计算设备、芯片 Download PDFInfo
- Publication number
- CN115658326B CN115658326B CN202211561497.5A CN202211561497A CN115658326B CN 115658326 B CN115658326 B CN 115658326B CN 202211561497 A CN202211561497 A CN 202211561497A CN 115658326 B CN115658326 B CN 115658326B
- Authority
- CN
- China
- Prior art keywords
- space
- index
- storage unit
- pointer
- request
- 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
- 238000000034 method Methods 0.000 title claims abstract description 36
- 238000012423 maintenance Methods 0.000 claims abstract description 97
- 230000015654 memory Effects 0.000 claims description 252
- 230000004044 response Effects 0.000 claims description 23
- 230000007246 mechanism Effects 0.000 claims description 11
- 230000002349 favourable effect Effects 0.000 abstract description 3
- 238000007726 management method Methods 0.000 description 234
- 230000008569 process Effects 0.000 description 21
- 238000010586 diagram Methods 0.000 description 16
- 238000012545 processing Methods 0.000 description 14
- 238000011084 recovery Methods 0.000 description 9
- 238000004891 communication Methods 0.000 description 6
- 230000003993 interaction Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000004064 recycling Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开公开了一种用于管理存储空间的装置及方法、计算设备、芯片。该装置包括:第一接口,连接外部请求源,并被配置为接收来自外部请求源的空间管理请求;至少两个空间管理模块,其中,每个空间管理模块被配置为:基于空间管理请求,分配或回收一个或多个存储单元索引,每个存储单元索引用于表征存储空间的第一存储区域中的一个具有预设大小的存储单元;空间维护模块,包括索引计数器,并被配置为:基于至少两个空间管理模块中的各空间管理模块所分配或回收的存储单元索引的数量,维护索引计数器。其有助于充分发挥硬件电路可并行的特点,提升存储空间管理效率。
Description
技术领域
本公开涉及计算机技术领域,具体地,涉及一种用于管理存储空间的装置、计算设备、用于管理存储空间的方法和芯片。
背景技术
随着计算机技术的发展,在人们的生活、工作、学习中,出现了越来越多的各种各样的计算设备。一般而言,在这些计算设备中,存在各种形式的处理器、控制器或微控制器,当它们运行应用程序以实现某种功能时,需要向内存请求一定的空间,当应用程序运行结束后,相应空间可以被释放。这便涉及到对内存空间的管理。
目前,内存空间的管理一般通过软件方式实现,即由CPU(central processingunit,中央处理器)或MCU(Microcontroller Unit,微控制单元)等运行内存管理策略,并发出指令,进而由硬件***对指令进行处理,再通过总线实现对内存的读写操作。在这类软件实现的内存管理方案中,通常存在路径长,延时高,结构复杂等问题。此外,在上述软件实现的内存管理方案中,一般只能依次处理各空间管理请求,而无法并行处理多个空间管理请求。
发明内容
有鉴于此,本公开提供了一种用于管理存储空间的装置、用于管理存储空间的方法、计算设备和芯片,可以缓解、减轻或甚至消除上述问题。
根据本公开的一方面,提供了一种用于管理存储空间的装置,包括:第一接口,连接外部请求源,并被配置为接收来自外部请求源的空间管理请求;至少两个空间管理模块,其中,每个空间管理模块被配置为:基于空间管理请求,分配或回收一个或多个存储单元索引,每个存储单元索引用于表征存储空间的第一存储区域中的一个具有预设大小的存储单元;空间维护模块,包括索引计数器,并被配置为:基于至少两个空间管理模块中的各空间管理模块所分配或回收的存储单元索引的数量,维护索引计数器。
在一些实施例中,空间管理请求包括空间分配请求和空间回收请求,每个空间管理模块包括:空间分配模块,被配置为:基于空间分配请求所请求分配的空间的大小,向外部请求源分配一个或多个存储单元索引,并向空间维护模块发送指示所分配的存储单元索引的数量的信息;空间回收模块,被配置为:基于空间回收请求所请求回收的空间,回收一个或多个存储单元索引,并向空间维护模块发送指示所回收的存储单元索引的数量的信息。
在一些实施例中,外部请求源包括两个或更多个请求源,以及,其中,至少两个空间管理模块中的每个空间管理模块与两个或更多个请求源中的至少一个请求源具有对应关系,并被配置为接收来自相对应的至少一个请求源的空间管理请求。
在一些实施例中,空间维护模块包括至少两个索引计数器,至少两个索引计数器中的每个索引计数器与至少两个空间管理模块具有对应关系,空间维护模块被进一步配置为:基于至少两个空间管理模块中的一个空间管理模块所分配或回收的存储单元索引的数量,维护与该空间管理模块对应的索引计数器。
在一些实施例中,上述装置还包括第二接口,第二接口连接存储器,存储器包括存储空间,其中,空间维护模块还被配置为维护索引指针,以及其中,每个空间管理模块还被配置为:基于空间管理请求,从空间维护模块获取索引指针;根据所获取的索引指针所指向的位置,经由第二接口管理存储空间中的第二存储区域内的存储单元索引;以及向空间维护模块发送针对索引指针的更新数据。
在一些实施例中,维护索引指针包括:响应于接收到来自空间管理模块的针对索引指针的更新数据,根据所接收的更新数据更新空间维护模块中的索引指针。
在一些实施例中,索引指针包括第一指针和第二指针,第一指针用于从第二存储区域读取存储单元索引,第二指针用于向所述第二存储区域写入存储单元索引。
在一些实施例中,空间管理请求包括空间分配请求和空间回收请求,每个空间管理模块包括:空间分配模块,被配置为:基于空间分配请求所请求分配的空间的大小,从空间维护模块获取第一指针,并根据第一指针所指向的位置,经由第二接口从存储空间中的第二存储区域读取一个或多个存储单元索引;空间回收模块,被配置为:基于空间回收请求所请求回收的空间,从空间维护模块获取第二指针,并根据第二指针所指向的位置,经由第二接口向存储空间中的第二存储区域写入一个或多个存储单元索引。
在一些实施例中,每个空间管理模块包括本地索引存储器,并被配置为:基于空间管理请求,从本地索引存储器读取一个或多个存储单元索引或向本地索引存储器写入一个或多个存储单元索引,以及其中,本地索引存储器被配置为:响应于本地索引存储器的剩余空间的大小满足预设条件,从空间维护模块获取索引指针,并根据所获取的索引指针所指向的位置,经由第二接口管理存储空间中的第二存储区域内的存储单元索引。
在一些实施例中,索引指针包括第一指针和第二指针,本地索引存储器被进一步配置为:响应于本地索引存储器的剩余空间的大小满足第一预设条件,经由第二接口从存储空间的第二存储区域读取第一预设数量的存储单元索引;响应于本地索引存储器的剩余空间的大小满足第二预设条件,经由第二接口向存储空间的第二存储区域写入第二预设数量的存储单元索引。
在一些实施例中,空间维护模块还被配置为:响应于两个或更多个空间管理模块同时请求获取同一索引指针,基于轮询机制优先向该两个或更多个空间管理模块中的一个空间管理模块提供该索引指针。
在一些实施例中,空间维护模块包括至少一个指针管理电路,每个指针管理电路用于维护一个相对应的索引指针,并包括:请求选择电路,被配置为接收来自各空间管理模块的获取该相对应的索引指针的请求,并基于轮询机制输出与一个空间管理模块相关的使能信号;更新数据选择电路,被配置为接收来自各空间管理模块的针对该相对应的索引指针的更新数据,并基于使能信号输出来自一个空间管理模块的更新数据;指针更新电路,被配置为基于来自更新数据选择电路的更新数据,更新所存储的该相对应的索引指针。
在一些实施例中,空间维护模块包括至少两个子维护模块,每个子维护模块包括子索引计数器,并且,每个子维护模块被配置为:基于至少两个空间管理模块中的各空间管理模块所分配或回收的一种存储单元索引的数量,维护该子维护模块中的子索引计数器,其中,一种存储单元索引所表征的存储单元具有预设大小集合中的一种预设大小。
在一些实施例中,每个子维护模块还被配置为维护子索引指针,每个子索引指针用于管理第二存储区域内的一个子区域中的存储单元索引,该子区域中的存储单元索引所表征的存储单元具有预设大小集合中的一种预设大小。
根据本公开的另一方面,提供了一种计算设备,包括根据前述方面所描述的用于管理存储空间的装置。
根据本公开的又一方面,提供了一种用于管理存储空间的方法,包括:接收来自外部请求源的空间管理请求;根据预设规则将所接收的空间管理请求传递到至少两个空间管理模块中的一个空间管理模块,其中,至少两个空间管理模块中的每个空间管理模块被配置为:基于空间管理请求,分配或回收一个或多个存储单元索引,每个存储单元索引用于表征存储空间的第一存储区域中的一个具有预设大小的存储单元;基于至少两个空间管理模块中的各空间管理模块所分配或回收的存储单元索引的数量,维护索引计数器。
由本公开提供的用于管理存储空间的装置可以包括两个或更多个空间管理模块和空间维护模块,该两个或更多个空间管理模块可以并行处理两个或更多个空间管理请求,空间维护模块可以协调不同空间管理模块的操作,例如在不同空间管理模块之间同步存储单元索引的计数等。由此,可以高效地经由硬件装置基于诸如CPU、MCU等的请求源的请求来管理存储器中存储空间的分配与回收,可以减少软件方式所带来的路径长、延时高等问题,从而有助于提升存储空间的管理效率,进而有助于提升整个计算***的运行速度。同时,借助单独的硬件装置实施内存管理可以释放处理器、控制器或微控制器的资源,有助于实现其资源的优化配置,从而有助于提升计算***的整体性能。此外,本公开提供的用于管理存储空间的装置允许通过不同空间管理模块并行处理不同空间管理请求,这有助于更充分地发挥硬件电路可并行处理的特点,进一步提升存储空间管理效率,并提高整体计算***的工作性能。
根据本公开的又一方面,提供了一种芯片,包括根据前述方面的各种实施例所描述的用于管理存储空间的装置。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示例性示出了相关技术中的内存管理架构的示意图;
图2A、2B、2C、2D及2E示意性示出了根据本公开的一些实施例的存储空间管理***的示例框图;
图3A和图3B示意性示出了根据本公开的一些实施例的存储空间的划分方案;
图4示意性示出了借助第一指针和第二指针管理存储单元索引的示例方案;
图5示意性示出了根据本公开的一些实施例的指针管理电路的示例电路图;
图6示意性示出了根据本公开的一些实施例的请求分类模块的示例框图;
图7示意性示出了根据本公开的一些实施例的本地索引存储器的示例架构;
图8示意性示出了根据本公开的一些实施例的空间分配模块的示例状态机;
图9示意性示出了根据本公开的一些实施例的空间回收模块的示例状态机;
图10示意性示出了根据本公开的一些实施例的空间分配流程的示例流程图;
图11示意性示出了根据本公开的一些实施例的空间回收流程的示例流程图;
图12示意性示出了根据本公开的一些实施例的空间管理模块的示例架构;
图13示意性示出了根据本公开的一些实施例的计算设备的示例框图;
图14示意性示出了根据本公开的一些实施例的用于管理存储空间的方法的示例流程图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。应理解,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示例性示出了相关技术中的内存管理架构100的示意图。如图1所示,在相关技术中,内存110可以直接由处理器120或类似结构经由总线130管理。示例性地,当处理器120需要向内存空间写入数据时,可以根据内部存储的内存空间管理策略确定可使用的空间,进而发出向相应内存空间写入数据的指令,该指令可以由硬件处理,并经由总线130发送至内存110,以实现数据写入。数据读取、删除等过程可以类似地实施。然而,申请人发现,通过这类方式执行内存管理存在以下缺点:第一,需占用处理器(或控制器、微控制器等)的资源来执行空间分配、回收等操作,不利于其资源的高效利用;第二,通过软件实施内存空间的分配和回收,需要硬件对指令进行处理,进而通过总线来在内存空间中进行读写操作,存在路径长、延时高、结构复杂等特点;第三,通过软件方式管理内存难以实现来自多个外部请求源的不同空间管理请求或来自一个外部请求源的多个空间管理请求的并行处理,限制了操作效率的提升;等等。
基于以上考虑,申请人提出了一种新的通过硬件电路实现内存管理的方案,其有助于解决或缓解上述各种问题。
图2A示意性示出了根据本公开的一些实施例的存储空间管理***200的示例框图。该存储空间管理***200包括用于管理存储空间的装置210,其可以接收来自外部请求源220的空间管理请求,并对所接收的空间管理请求进行处理,以管理存储器中的存储空间。示例性地,存储器可以是各种用作内存的存储器,例如双倍速率(Double Data Rate,DDR)同步动态随机存储器等,或者也可以是其他类型的存储器。示例性地,外部请求源220可以是任何可以发起空间管理请求的设备,例如CPU、GPU、MCU等。此外,虽然在本公开的附图中仅示出了一个外部请求源,但是,可以根据具体应用需求,使用本公开的实施例所提供的装置210来接收并处理来自多个外部请求源的空间管理请求。
如图2所示,用于管理存储空间的装置210可以包括第一接口211、空间管理模块212-1至212-N(N为大于或等于2的整数)和空间维护模块213。第一接口211可以与外部请求源220相连接,例如通过专用线路或公用线路(比如总线)相连接,并用于实现外部请求源220与装置210之间的通信,例如通过握手方式实现数据通信。第一接口211可以被配置为接收来自外部请求源220的空间管理请求,并可以被配置为将来自空间管理模块的管理结果反馈至外部请求源220。示例性地,空间管理请求可以为空间分配请求或空间回收请求等,管理结果可以为例如指示所分配空间的存储单元索引、空间分配失败、空间回收成功等的信息。在本公开中,空间分配请求可以指用于请求分配存储器中的一定大小的空间以供使用的请求,空间回收请求(或称为空间释放请求)可以指用于请求回收(或请求释放)存储器中的使用完毕的空间的请求。
空间管理模块212-1至212-N中的每个空间管理模块可以被配置为:基于空间管理请求,分配或回收一个或多个存储单元索引,每个存储单元索引用于表征存储器的存储空间的第一存储区域中的一个具有预设大小的存储单元。示例性地,存储器的全部或部分存储空间可以被预先划分为多个存储单元,每个存储单元可以具有预设大小。该预设大小可以根据具体需求设置,例如被设置为4 KB,或者被设置为2 KB、8 KB、16 KB、32 KB等。上述每个存储单元索引可以表征一个存储单元。示例性地,假设存储器中被划分的存储区域(即上述第一区域)的大小为8Gb,若以4 KB粒度将其划分为多个存储单元,则共可划分为2097152个存储单元,从而共存在2097152个存储单元索引。可选地,这些存储单元索引可以存储在装置210本地的索引存储器中,或者可以存储在外部存储器中,比如上述存储器的存储空间的第二存储区域中。此外,示例性地,存储空间的第一存储区域也可以被划分为具有多种预设大小的存储单元,这将在下文予以更详细地描述。示例性地,可以根据预设规则向各个空间管理模块212-1至212-N传递空间管理请求(换言之,在各个空间管理模块212-1至212-N之间分派所接收的空间管理请求),例如可以根据以下规则中的一项或多项向各个空间管理模块212-1至212-N传递空间管理请求:按照预设次序轮流向各空间管理模块传递空间管理请求、在某个空间管理模块空闲时即向其传递下一个空间管理请求、将来自不同外部请求源的空间管理请求传递至向不同空间管理模块或不同组空间管理模块等。此外,示例性地,各空间管理模块可以通过独立的握手机制从前级电路模块接收空间管理请求,或者,其也可以通过其他机制来接收空间管理请求。
空间维护模块213可以包括索引计数器2131,并可以被配置为:基于至少两个空间管理模块212-1至212-N中的各空间管理模块所分配或回收的存储单元索引的数量,维护索引计数器2131。示例性地,空间维护模块213可以接收来自各个空间管理模块的消息,以获得其所分配或回收的存储单元索引的数量。基于该数量维护索引计数器1231可以包括:基于空间管理模块所分配的存储单元索引的数量,令索引计数器1231在第一方向上变化,变化量可以等于所分配的存储单元索引的数量;基于空间管理模块所回收的存储单元索引的数量,令索引计数器1231在第二方向上变化,变化量可以等于所回收的存储单元索引的数量。
示例性地,存储空间管理装置210可以被实现为各种类型的硬件电路,例如形成为集成电路、封装为芯片结构等,从而可以根据需求而被使用,例如被焊接到电路板的相应引脚处或***到电路板的相应插口中等。
通过装置210,可以通过硬件方式对存储器(例如,诸如DDR的内存储器)的存储空间进行管理,可以减少软件管理方式的弊端,并可以提供一种更便捷的管理方式,有利于提升空间管理效率,节省CPU或MCU等主控制单元的处理资源,进而提升整个计算***的操作效率,优化整个计算***的资源配置。同时,通过存储空间管理装置210,允许通过多个空间管理模块并行处理多个空间管理请求,并可以借助空间维护模块维护各空间管理模块之间的数据一致性,例如维护存储单元索引的计数的一致性,其中,该多个空间管理请求可以是来自不同外部请求源的请求,也可以是来自单个外部请求源的请求。这有助于充分发挥硬件电路可并行的特点,并在并行处理的同时确保空间管理性能的稳定性和可靠性,从而有效提升空间管理效率,进而有助于提升存储空间管理***的整体效率。
在本公开中,空间管理可以包括空间分配和空间回收两个方面,空间分配可以借由存储单元索引的分配来实施,空间回收可以借由存储单元索引的回收来实施。进一步地,存储单元索引的分配可以理解为由空间管理模块从本地或外部存储器获取存储单元索引并反馈至外部请求源的过程,而存储单元索引的回收可以理解为由空间管理模块将与外部请求源所请求回收的空间相对应的存储单元索引写入本地或外部存储器的过程。
在一些实施例中,如前文所提及的,外部请求源可以包括多个请求源,以及至少两个空间管理模块212-1至212-N中的每个空间管理模块可以与该两个或更多个请求源中的至少一个请求源具有对应关系,并被配置为接收来自相对应的该至少一个请求源的空间管理请求。示例性地,该对应关系可以是根据需要预先配置的。通过由一个空间管理模块处理来自特定的一个或几个请求源的空间管理请求,可以并行处理来自多个请求源的空间管理请求,并有助于保障各请求源的空间管理请求均可以被及时响应和处理。示例性地,至少两个空间管理模块与至少两个请求源可以是一一对应的,即每个空间管理模块用于接收和处理来自一个请求源的空间管理请求。或者,示例性地,可以存在一个空间管理模块被配置为接收来自一组请求源的空间管理请求的情况,该一组请求源可以包括两个或更多个请求源。
在上述实施例中,空间维护模块可以包括至少两个索引计数器,该至少两个索引计数器中的每个索引计数器可以与上述至少两个空间管理模块具有对应关系。相应地,空间维护模块可以被进一步配置为:基于至少两个空间管理模块中的一个空间管理模块所分配或回收的存储单元索引的数量,维护与该空间管理模块对应的索引计数器。示例性地,可以对应于各个空间管理模块的索引计数器配置计数边界值,即,可以限定各个空间管理模块可分配的存储单元索引的上限值。由此,可以限定各个请求源所能请求的存储空间上限,这有助于减少单个请求源占用过多空间而影响其他请求源的正常工作的概率,并减少引起死锁等问题,从而有助于提升***稳定性和可靠性,并有助于提升整体空间管理效率。
在一些实施例中,如前文所提及的,存储单元索引可以存储在存储器上。示例性地,图2B示意性示出了根据本公开的一些实施例的存储空间管理***200B的示例框图。如图2B所示,相较于图2A所示的***200A,***200B还可以包括存储器230,装置210可以用于管理存储器230中的存储空间。在此实施例中,用于管理存储空间的装置210还可以包括第二接口214。第二接口214可以与存储器230相连接,并用于实现存储器230与装置210之间的通信,例如可以将来自装置210的读取或写入请求发送至存储器230、接收来自存储器230的读取数据、接收来自存储器230的指示写入结果的信息等。示例性地,空间管理模块212-1至212-N可以经由第二接口214向存储器230的存储空间的第二存储区域写入存储单元索引,或者经由第二接口214从存储器230的存储空间的第二存储区域读取存储单元索引。进一步示例性地,空间管理模块212-1至212-N可以借助指针来在存储器230的第二存储区域中读写存储单元索引。
示例性地,在图2B所示的实施例中,空间维护模块213还可以被配置为维护索引指针,以便在不同空间管理模块之间保持索引指针数据的一致性,确保各空间管理模块可以及时获取到最新的索引指针,从而协调不同空间管理模块与存储器的读写交互操作,减少读写数据处理错误。相应地,空间管理模块212-1至212-N中的每个空间管理模块还可以被配置为:基于空间管理请求,从空间维护模块获取索引指针;根据所获取的索引指针所指向的位置,经由第二接口管理存储空间中的第二存储区域内的存储单元索引;以及向空间维护模块发送针对索引指针的更新数据。可选地,针对索引指针的更新数据可以包括指示索引指针应增加或减小的数值。示例性地,针对索引指针的更新数据可以包括指示空间管理模块从存储器读取或向存储器写入的存储单元索引的数量的数据。以及,示例性地,在一些实施例中,前述从存储器读取或向存储器写入的存储单元索引的数量即所分配或回收的存储单元索引的数量。应理解,上述获取索引指针的步骤、根据索引指针管理存储单元索引的步骤和发送针对索引指针的更新数据的步骤虽然是顺序描述的,但实际上,其也可以并行执行或者以相反顺序执行。示例性地,从空间维护模块获取索引指针可以通过向其发送获取索引指针的请求、并接收空间维护模块返回的索引指针来实施。可选地,可以在发送获取索引指针的请求的同时或在稍后的时间向空间维护模块发送针对索引指针的更新数据,以便可以及时将空间维护模块中的索引指针维护至空间管理模块本次管理操作结束时的指针状态,减少其他空间管理模块获取到过时的索引指针数据而导致处理错误,这有助于保证装置210的可靠性。
在上述示例中,响应于接收到来自空间管理模块的针对索引指针的更新数据,空间维护模块213可以根据所接收的更新数据更新空间维护模块中的索引指针。示例性地,可以根据空间管理模块从存储器读取或向其写入的存储单元索引的数量来更新相应的索引指针。
在本公开的一些实施例中,由于存在两个或更多个空间管理模块,故可能出现两个或更多个空间管理模块同时请求获取同一索引指针的情况。为解决该问题并保证空间管理装置的稳定性和可靠性,空间维护模块可以被配置为根据预设规则响应两个或更多个空间管理模块中的一个空间管理模块的请求。示例性地,响应于两个或更多个空间管理模块同时请求获取同一索引指针,可以基于轮询机制优先向该两个或更多个空间管理模块中的一个空间管理模块提供该索引指针。示例性地,可以基于与空间管理模块相关的当前排序,向排序最靠前的空间管理模块提供索引指针;然后,可以将该空间管理模块移动至当前排序的最末位,以更新当前排序。例如,假设当前排序为空间管理模块1、空间管理模块2、空间管理模块3、……、空间管理模块N,若空间管理模块2和空间管理模块3同时请求同一索引指针,则向空间管理模块2提供该索引指针,同时将当前排序更新为空间管理模块1、空间管理模块3、……、空间管理模块N、空间管理模块2;以此类推。由此,可以快捷地在两个或更多个空间管理模块中选择向其中一个提供索引指针,并可以平衡不同空间管理模块对索引指针的请求被优先处理的概率。此外,示例性地,也可以通过其他机制来在两个或更多个空间管理模块请求同一索引指针时确定应优先响应哪个空间管理模块,例如:可以为各个空间管理模块预设优先级,并根据优先级次序确定优先响应哪个空间管理模块;等等。
示例性地,上述索引指针可以包括第一指针和第二指针。第一指针可以用于从存储空间的第二存储区域读取存储单元索引,第二指针可以用于向存储空间的第二存储区域写入存储单元索引。换言之,当空间管理模块需要从存储器读取存储单元索引时,可以从空间维护模块获取第一指针,并根据所获取的第一指针所指向的位置,经由第二接口从存储空间中的第二存储区域读取存储单元索引;当当空间管理模块需要向存储器写入存储单元索引时,可以从空间维护模块获取第二指针,并根据所获取的第二指针所指向的位置,经由第二接口向存储空间中的第二存储区域写入存储单元索引。借助第一指针和第二指针,可以便捷地管理存储器的存储空间中的第二存储区域内的存储单元索引。
示意性地,图3A、图3B及图4示出了根据本公开实施例的存储空间的划分方案以及基于索引指针的存储单元索引管理方案。
如图3A所示,存储空间300可以包括第一存储区域310和第二存储区域320。可选地,存储空间300还可以包括留作他用的其他存储区域330。第一存储区域310可以被划分为多个存储单元,每个存储单元可以具有预设大小。如前文所提及的,该预设大小可以根据具体需求设置,例如被设置为4 KB,或者被设置为2 KB、8 KB、16 KB、32 KB等。相应地,第二存储区域320可以被写入多个存储单元索引,每个存储单元索引可以表征第一存储区域310中的一个存储单元。如前文示例所述,当第一存储区域的大小为8 GB时,假设以4 KB粒度将其划分为多个存储单元,则共可划分为2097152个存储单元,从而共需2097152个存储单元索引。若每个存储单元索引可以以4个字节(byte)存储在第二存储区域中,则在上述示例中,第二存储区域的大小可以为8 MB。
在一些实施例中,第一存储区域310可以被划分为多个存储单元,其中,每个存储单元具有预设大小集合中的一种预设大小。预设大小集合可以根据具体需求设置,例如可以被设置为包括2 MB、512 KB、128 KB、64 KB、16 KB、4 KB中的一个或多个,或者也可以包括其他预设大小。例如,当第二存储区域的大小为8 GB时,假设以2 MB粒度划分4 Gb存储空间、以512 KB粒度划分2 GB存储空间、以128 KB粒度划分1 GB存储空间、以64 KB粒度划分512 MB存储空间、以16 KB粒度划分256 MB存储空间、以4KB粒度划分256 MB存储空间,则共可划分为2048个2 MB存储单元、4096个512 KB存储单元、8192个128 KB存储单元、8192个64KB存储单元、16384个16 KB存储单元、65536个4 KB存储单元。若为每个存储单元分配一个4字节(byte)的存储单元索引,则2 MB存储单元对应的存储单元索引需8 KB进行存储、512KB存储单元对应的存储单元索引需16 KB进行存储、8192个128 KB存储单元对应的存储单元索引需32 KB进行存储、64 KB存储单元对应的存储单元索引需32 KB进行存储、16 KB存储单元对应的存储单元索引需64 KB进行存储、4 KB存储单元对应的存储单元索引需256KB进行存储。由此,在上述示例中,第二存储区域的大小可以为408 KB。在这种实施例中,如图3B所示,第二存储区域320可以被划分为多个子区域321、322等,每个子区域可以仅写入与相同预设大小对应的存储单元索引。以前文所述的示例为例,可以将第二存储区域划分为6个子区域,分别存储2 MB、512 KB、128 KB、64 KB、16 KB、4 KB的存储单元所对应的存储单元索引。此外,在这种实施例中,为了标识对应于不同预设大小的存储单元索引,可以在各存储单元索引中包含指示预设大小的标识符。例如,可以将存储单元索引划分为标识符部分和单元索引部分,标识符部分可以用于存放指示预设大小的标识符,单元索引部分可以用于存放具有相应预设大小的存储单元的索引值。示例性地,在上文描述的具有2 MB、512 KB、128 KB、64 KB、16 KB、4 KB这6种预设大小、并以4个字节表示存储单元索引的示例中,针对每个存储单元索引,可以以高3位表示预设大小,例如,可以以000表示4 KB、以001表示16 KB、以010表示64 KB、以011表示128 KB、以100表示512 KB、以101表示2 MB,其余29位则可以表示具体的索引值。
示例性地,装置210可以包括索引配置寄存器,其可以用于基于用户输入来配置上述一种或多种存储单元索引的数量和/或所对应存储单元的大小,例如,可以基于用户输入存储一种或多种存储单元索引的配置数量,并在装置上电后下发至装置210,比如下发至其中的各空间管理模块212-1至212-N、空间维护模块213等,以允许根据具体需求来灵活调整存储空间的划分方式。
示例性地,图4示意性示出了空间分配模块和空间回收模块借助一组第一指针和第二指针在第一存储区域或其子区域中读取和写入存储单元索引的示例方案400。如子图A所示,当装置上电后,第一指针和第二指针可以被初始化为指向区域410中的相同位置,例如均指向区域410的最小地址,或者也可以指向其他位置。如子图B所示,当空间分配请求或者由空间分配请求拆分得到的子分配请求被空间分配模块处理后,来自区域410的一定数量的存储单元索引被读取,此时第一指针将向下偏移,例如指向下一个可被读取的存储单元索引的位置。如子图C所示,当空间回收请求或者由空间回收请求拆分得到的子回收请求被空间回收模块处理后,相应的存储单元索引将被写入区域410,此时第二指针将向下偏移,例如指向下一个可写入存储单元索引的位置。如子图D所示,当第一指针和/或第二指针偏移到区域410的最大地址后,将绕回到起始位置。以上描述仅仅是示例性的,第一指针和第二指针也可以以其他方式随存储单元索引的读取和写入而偏移。应理解,图4所示的区域410可以为图3A所示的区域320,或者也可以为图3B所示的区域320的子区域321、322等。此外,示例性地,装置210还可以包括地址配置寄存器,其可以用于基于用户输入配置上述第一区域320或其各子区域321、322等的起始地址和终止地址(比如上文所述的最小地址和最大地址),例如,基于用户输入存储起始地址和/或终止地址,并在装置上电后向装置210(比如向其中的空间维护模块213)下发所存储的起始地址和/或终止地址,使得第一指针和第二指针可以在相应区域的起始地址和终止地址之间移动,从而允许根据具体需求灵活配置各起始地址和终止地址。
在一些实施例中,空间维护模块213可以包括一个或多个指针管理电路,每个指针管理电路可以用于维护一个索引指针。图5示意性示出了根据本公开的一些实施例的指针管理电路500的示例电路图。如图5所示,指针管理电路500可以用于管理一个索引指针(为便于描述,下文称之为指针P)包括请求选择电路510、更新数据选择电路520和指针更新电路530。
具体地,请求选择电路510可以被配置为接收来自各空间管理模块的获取指针P的请求,并基于轮询机制输出与一个空间管理模块相关的使能信号;更新数据选择电路520可以被配置为接收来自各空间管理模块的针对指针P的更新数据,并基于上述使能信号输出来自一个空间管理模块的更新数据;指针更新电路530可以被配置为基于来自更新数据选择电路520的更新数据,更新所存储的指针P。示例性地,请求选择电路510可以通过图5所示的round_robin模块(即轮询调度模块)实现,其可以接收来自各个空间管理模块针对指针P的请求,例如图中所示的请求read_ptr_req1(第一指针读取请求)和read_ptr_req2(第二指针读取请求),其示意性地表示来自两个空间管理模块的获取指针P的请求;更新数据选择电路可以通过图5所示的数据选择器mux来实现,其可以具有两个或更多个输入端,以接收来自两个或更多个空间管理模块(例如图中所示的第一请求端master0和第二请求端master1)的针对指针P的更新数据,其使能端可以连接至round_robin模块的输出端,即将其输出作为使能信号来在输入数据中选择一个进行输出;指针更新电路530可以通过图5所示的加法器ADD和边沿触发寄存器flip-flop来实现,其中,边沿触发寄存器flip-flop可以存储指针P,加法器ADD的两个输入端可以分别与数据选择器mux的输出端以及边沿触发寄存器flip-flop的输出端相连,以实现所存储的指针P与更新数据相加并将更新后的指针P存储至边沿触发寄存器flip-flop的功能。应理解,图5所示的电路结构仅仅是示例性地,实际上,也可以使用其他电路结构来实现上述指针管理电路,以及,不同指针的指针管理电路的电路结构可以相同或不同。
图2C示意性示出了根据本公开的一些实施例的存储空间管理***200C的示例框图。如图2C所示,在一些实施例中,如前文所提及的,空间管理请求可以包括空间分配请求和空间回收请求,相应地,各空间管理模块可以包括空间分配模块和空间回收模块,例如,空间管理模块212-1可以包括空间分配模块2121-1和空间回收模块2122-1、空间管理模块212-N可以包括空间分配模块2121-N和空间回收模块2122-N,以此类推。此外,可选地,相较于图2B所示的存储空间管理***200B,装置210还可以包括请求分类模块215和/或总线216(为简洁起见,图2C略去了第一接口、第二接口)。
具体地,空间分配模块2121-1至2121-N中的每一个可以被配置为:基于空间分配请求所请求分配的空间的大小,向外部请求源220分配一个或多个存储单元索引,并向空间维护模块发送指示所分配的存储单元索引的数量的信息;空间回收模块2122-1至2122-N中的每一个可以被配置为:基于空间回收请求所请求回收的空间,回收一个或多个存储单元索引,并向空间维护模块发送指示所回收的存储单元索引的数量的信息。示例性地,空间分配模块可以接收由上级电路模块传递的空间分配请求,基于该空间分配请求所请求分配的空间的大小,可以确定所需分配的存储单元索引的数量,随后,可以从本地或外部存储器获取所需数量的存储单元索引,并反馈至外部请求源,以完成空间分配操作,在空间分配完成后或在其过程中,可以向空间维护模块发送消息以指示所分配的存储单元索引的数量。可选地,可以分两批或更多批来分配所需数量的存储单元索引。类似地,示例性地,空间回收模块可以接收由上级电路模块传递的空间回收请求,基于该空间回收请求所请求回收的空间,可以确定所需回收的存储单元索引,随后,可以向本地或外部存储器写入所需回收的存储单元索引,并可选地反馈指示回收完成的信号,以完成空间回收操作,在空间回收完成后或在其过程中,可以向空间维护模块发送消息以指示所回收的存储单元索引的数量。可选地,可以分两批或更多批来回收所需回收的存储单元索引。通过单独的空间分配模块和空间回收模块,可以允许并行处理空间分配请求和空间回收请求,从而更好地发挥硬件电路的可并行优势。
如前文所提及的,在一些实施例中,空间管理模块可以基于索引指针来管理存储在存储器中存储空间的第二存储区域中的存储单元索引。在这种实施例中,各空间分配模块2121-1至2121-N可以被配置为:基于空间分配请求所请求分配的空间的大小,从空间维护模块获取第一指针,并根据第一指针所指向的位置,经由第二接口从存储空间中的第二存储区域读取一个或多个存储单元索引;各空间回收模块2122-1至2122-N可以被配置为:基于空间回收请求所请求回收的空间,从空间维护模块获取第二指针,并根据第二指针所指向的位置,经由第二接口向存储空间中的第二存储区域写入一个或多个存储单元索引。示例性地,如前文所提及的,在从空间维护模块获取第一指针时或在稍后时刻,空间分配模块可以向空间维护模块发送针对第一指针的更新数据,以及在从空间维护模块获取第二指针时或在稍后时刻,空间回收模块可以向空间维护模块发送针对第二指针的更新数据。基于第一指针和第二指针读写存储单元索引的过程、以及第一指针和第二指针的维护过程已在前文详述,在此不再重复。
请求分类模块215可以用于对空间管理请求进行分类存储。示意性地,图6示出了根据本公开的一些实施例的请求分类模块215的示例框图。如图6所示,请求分类模块215可以包括第一队列2151和第二队列2152,并可以被配置为:接收空间管理请求,当空间管理请求为空间分配请求时,将其存储至第一队列2151,以及,当空间管理请求为空间回收请求时,将其存储至第二队列2152。由此,可以对来自外部请求源的空间管理请求进行分类存储,使得空间分配请求和空间回收请求可以同时被传递至后级模块,例如传递至空间分配模块和空间回收模块,从而便利于对空间分配请求和空间回收请求进行并行处理。此外,第一队列2151和第二队列2152可以对所接收的空间分配请求和空间回收请求进行存储,如此,当外部请求源发起多次请求时,可以减少对外部请求源的反压,提高***效率。可选地,第一队列2151和第二队列2152可以采取诸如FIFO的存储结构。由于FIFO存储空间的有限性,可以为第一队列2151和第二队列2152设置预满门限。当第一队列2151中所存储的空间分配请求的数量达到相应预满门限(或被称为第一阈值)时,第一队列2151可以进行预满反压,可以不再接收来自外部请求源的空间分配请求;当第二队列2152中所存储的空间回收请求的数量达到相应预满门限(或被称为第二阈值)时,第二队列2152可以进行预满反压,可以不再接收来自外部请求源的空间回收请求。通过反压机制,可以防止请求分类模块215接收到超出其存储能力的空间分配请求和/或空间回收请求,从而减少出现处理错误的概率。此外,示例性地,请求分类模块215可以根据预设规则将所存储的空间分配/回收请求传递至空间分配模块2121-1至2121-N/空间回收模块2122-1至2122-N中的一个模块,例如,可以根据指示空间分配/回收请求所来源于的请求源的标识来将其传递至相应的空间分配/回收模块。
总线216可以与各个空间管理模块和/或其他模块相连接,例如与图2C所示的空间分配模块2121-1至2121-N以及空间回收模块2122-1至2122-N相连接,以便这些模块可以经由装置210的第二接口(未示出)与存储器230进行数据交互。示例性地,总线216可以是标准的NOC(Network on Chip,片上网络)总线,或者也可以采用其他类型的总线来实现。此外,可选地,总线216还可以连接与本公开描述的各种模块相关或不相关的其他模块。
图2D示意性示出了根据本公开的一些实施例的存储空间管理***200D的示例框图。如图2D所示,在一些实施例中,各空间管理模块212-1至212-N中的每个空间管理模块还可以包括本地索引存储器,如图2D所示的本地索引存储器2123-1至2123-N。此外,可选地,装置210还可以包括初始化模块217。
示例性地,初始化模块217可以被配置为:在装置210上电后,经由其第二接口在存储器230的存储空间的第二存储区域和/或本地索引存储器中写入多个存储单元索引。示例性地,当硬件电路上电复位后,初始化模块217可以先将存储单元索引写入存储器230的第二存储区域中,如前文所述,该第二存储区域可以是预先指定的区域,并且其大小和位置可以根据需要进行调整;或者,示例性地,初始化模块217可以将部分存储单元索引写入本地索引存储器213中,并将其余存储单元索引写入存储器230的第二存储区域中;等等。当所有存储单元索引写入完毕后,装置210可以开始响应来自外部请求源220的空间管理请求,并且此后初始化模块217可以不再工作,直至硬件电路断电,并在下次上电后再次启动。示例性地,当初始化模块217完成上述索引写入操作后,可以向前级电路(例如前文描述的请求分类模块215或其他电路模块)发出信号,以告知前级电路可以开始接收空间管理请求。
具体地,本地索引存储器2123-1至2123-N中的每个本地索引存储器可以用于存储存储单元索引,并可以被配置为:响应于该本地索引存储器的剩余空间的大小满足预设条件,从空间维护模块213获取索引指针,并根据所获取的索引指针所指向的位置,经由第二接口(图2D未示出)管理存储器230的存储空间中的第二存储区域内的存储单元索引。每个空间管理模块可以被配置为:基于空间管理请求,从本地索引存储器读取一个或多个存储单元索引或向本地索引存储器写入一个或多个存储单元索引。通过设置本地索引存储器,可以缩短空间分配及空间回收过程中的存储单元索引的读写路径,降低装置210与存储器230的交互频率,有助于提升整体***效率。
示例性地,每个空间管理模块中的空间分配模块可以基于空间分配请求所请求分配的空间的大小,从相应的本地索引存储器读取一个或多个存储单元索引,该读取过程可以一次性或分若干次完成;每个空间管理模块中的空间回收模块可以基于空间回收请求所请求回收的空间,向相应的本地索引存储器写入一个或多个存储单元索引,该写入过程可以一次性或分若干次完成。在空间管理模块从本地索引存储器读取存储单元索引或向本地索引存储器写入存储单元索引的过程中,若本地索引存储器的剩余空间满足上述预设条件,则可向空间维护模块213请求索引指针,并根据索引指针所指向的位置,向存储器230的第二存储区域写入存储单元索引或从其读取存储单元索引。若两个或更多个本地索引存储器同时请求获取同一索引指针,则空间维护模块213可以根据前文实施例所述的机制优先向其中一个本地索引存储器提供该索引指针,并基于其所提供的针对该索引指针的更新数据更新该索引指针。可选地,本地索引存储器2123-1至2123-N可以是FIFO(First in firstout,先进先出)或其他类型的存储器。本地索引存储器2123-1至2123-N中各本地索引存储器的占用空间可以指其当前因存储存储单元索引所占用的空间,剩余空间可以指用于容纳存储单元索引的空间中的当前未被存储单元索引占用的空间。示例性地,本地索引存储器2123-1至2123-N中各本地索引存储器的剩余空间或占用空间的大小可以通过其实际大小(比如以字节、千字节等为单位)或以可容纳存储单元索引的数量来表示,或者也可以以其他方式来表示。示例性地,假设一本地索引存储器总共可容纳218个存储单元索引,当前存储了100个存储单元索引,则其占用空间可以记为100,剩余空间可以记为118。
示例性地,如前文所提及的,索引指针可以包括第一指针和第二指针,本地索引存储器2123-1至2123-N中的每个本地索引存储器可以被进一步配置为:响应于本地索引存储器的剩余空间的大小满足第一预设条件,经由第二接口从存储器230的存储空间的第二存储区域读取第一预设数量的存储单元索引;响应于本地索引存储器的剩余空间的大小满足第二预设条件,经由第二接口向存储器230的存储空间的第二存储区域写入第二预设数量的存储单元索引。可选地,第一预设条件和第二预设条件、以及第一预设数量和第二预设数量可以是固定的,可以是可由用户配置的,或者也可以是由装置根据预设规则自动确定的。示例性地,第一预设条件可以为:本地索引存储器213的剩余空间大于第一阈值,其可以通过如下等价条件来判断:本地索引存储器213的占用空间小于或等于总空间与第一阈值的差,总空间可以理解为本地索引存储器213中用于容纳存储单元索引的空间总量;第二预设条件可以为:本地索引存储器213的剩余空间小于第二阈值,其同样可以通过如下等价条件来判断:本地索引存储器213的占用空间大于或等于总空间与第二阈值的差。在一些实施例中,第一预设数量可以根据剩余空间的大小来确定,例如确定为剩余空间与某预设值的乘积,该预设值可以为0至1之间的值;类似地,第二预设数量可以根据占用空间的大小来确定,例如确定为占用空间与某预设值的乘积,该预设值可以为0至1之间的值。
图7示意性示出了根据本公开的一些实施例的本地索引存储器2123-N的示例架构。如图7所示,本地索引存储器2123-N存在两种写入场景,即:基于空间回收请求的回收写入,当本地索引存储器2123-N的剩余空间满足第一条件并向存储器发起针对存储单元索引的读取请求时的存储器写入;以及,本地索引存储器2123-N存在两种读出场景,即:基于空间分配请求的分配读出,当本地索引存储器2123-N的剩余空间满足第二条件并向存储器发起针对存储单元索引的写入请求时的存储器读出。可选地,当上述回收写入与存储器写入冲突时,可以优先回收写入;当上述分配读出和存储器读出冲突时,可以优先分配读出。通过优先回收写入和分配读出,可以优先空间管理操作,并进一步降低针对存储器的读写频率。
由此,示例性地,上述响应于本地索引存储器的剩余空间的大小满足第一预设条件,经由第二接口从存储空间的第二存储区域读取存储单元索引可以包括:当本地索引存储器的剩余空间大于第一阈值且未接收到来自空间管理模块的索引写入请求时,经由第二接口从存储空间的第二存储区域读取第一预设数量的存储单元索引。以及,其还可以包括:当本地索引存储器的剩余空间大于第一阈值时,响应于接收到来自空间管理模块的索引写入请求,优先写入与索引写入请求相关的存储单元索引。可以理解,当本地索引存储器的剩余空间大于第一阈值但接收到来自空间管理模块的索引写入请求时,若该索引写入请求被执行,则本地索引存储器的剩余空间可能不再大于第一阈值,也即可能无需再执行从存储器写入存储单元索引的操作;而若优先从存储器读取存储单元并写入本地索引存储器,则可能导致,当后续与索引写入请求相关的存储单元索引被写入后,本地索引存储器的剩余空间将低于第二阈值,从而又需向存储器写入存储单元索引。由此,在两者发生冲突时,优先写入与索引写入请求相关的存储单元索引有助于降低与存储器的交互频次,减少从存储器读取或向其写入存储单元索引的次数和索引量。进一步地,本地索引存储器的剩余空间大于第一阈值这一条件可以理解为本地索引存储器的当前剩余空间大于第一阈值且当前不存在潜在的使其剩余空间减小的因素。
类似地,示例性地,上述响应于本地索引存储器的剩余空间的大小满足第二条件,经由第二接口向存储空间的第二存储区域写入存储单元索引可以包括:当本地索引存储器的剩余空间小于第二阈值且未接收到来自空间管理模块的索引读出请求时,经由第二接口向存储空间的第二存储区域写入第二预设数量的存储单元索引。以及,其还可以包括:当本地索引存储器的剩余空间小于第二阈值时,响应于接收到来自空间管理模块的索引读出请求,优先读出与索引读出请求相关的存储单元索引。可以理解,当本地索引存储器的剩余空间小于第二阈值但接收到来自空间管理模块的索引读出请求时,若该索引读出请求被执行,则本地索引存储器的剩余空间可能不再小于第二阈值,也即可能无需再执行向存储器写入存储单元索引的操作;而若优先向存储器写入存储单元,则可能导致,当后续与索引读出请求相关的存储单元索引被读出后,本地索引存储器的剩余空间将高于第一阈值,从而又需从存储器读取存储单元索引。由此,在两者发生冲突时,优先读出与索引读出请求相关的存储单元索引有助于降低与存储器的交互频次,减少从存储器读取或向其写入存储单元索引的次数和索引量。进一步地,本地索引存储器的剩余空间小于第二阈值这一条件可以理解为本地索引存储器的当前剩余空间小于第二阈值且当前不存在潜在的使其剩余空间增大的因素。
根据上文所述的存在本地索引存储器的实施例,图8示意性示出了可用于控制各空间分配模块2121-1至2121-N的操作的示例状态机800。
如图8所示,当未接收到空间分配请求时,空间分配模块可以处于IDLE状态,即空闲状态。当接收到空间分配请求时,可以判断该空间分配请求所请求分配的存储单元索引是否已完成分配,若是,则向上级电路模块反馈完成(DONE)信号,并跳转回IDLE状态,若否,则跳转至判断本地索引存储器是否为空。可选地,在图8所示的示例中,本地索引存储器被示出为FIFO类型的存储器。若FIFO为空,则跳转至等待状态,若FIFO非空,则跳转至从FIFO读取存储单元索引的状态。在等待状态下,可以等待预设时间量,随后跳转至判断分配是否完成以及判断FIFO是否为空。可选地,用于等待状态的预设时间量可以是固定值、可配置值或者可自适应调整的值。例如,该预设时间量可以根据本地索引存储器的总空间、本地索引存储器一次性从存储器读取存储单元索引的数量、存储空间管理装置与存储器之间的数据传输延时等中的一项或多项来确定。比如,在前述示例中,若本地索引存储器的容量为128个存储单元索引,其一次性从存储器读取的存储单元索引的数量为剩余空间的2/3,则上述预设时间量可以大致确定为128*(2/3)+数据传输延时(例如总线延时)。在从FIFO读取存储单元索引的状态下,可以从本地索引存储器(即该示例中的FIFO)读取存储单元索引。示例性地,每次可以读取一个存储单元索引并进行计数,随后跳转判断分配是否完成以及FIFO是否为空,直至所需数量的存储单元索引读取完毕。
根据上文所述的存在本地索引存储器的实施例,图9示意性示出了可用于控制各空间回收模块2122-1至2122-N的操作的示例状态机900。
如图9所示,当未接收到空间回收请求时,空间回收模块可以处于IDLE状态,即空闲状态。当接收到空间回收请求时,可以判断该空间回收请求所请求回收的存储单元索引是否已完成回收,若是,则向上级电路模块反馈完成(DONE)信号,并跳转回IDLE状态,若否,则跳转至判断本地索引存储器是否为满。可选地,在图9所示的示例中,本地索引存储器被示出为FIFO类型的存储器。若FIFO为满,则跳转至等待状态,若FIFO非满,则跳转至向FIFO写入存储单元索引的状态。在等待状态下,可以等待预设时间量,随后跳转至判断回收是否完成以及判断FIFO是否为满。可选地,用于等待状态的预设时间量可以是固定值、可配置值或者可自适应调整的值。例如,该预设时间量可以根据本地索引存储器的总空间、本地索引存储器一次性向存储器写入存储单元索引的数量、存储空间管理装置与存储器之间的数据传输延时等中的一项或多项来确定。比如,在前述示例中,若本地索引存储器的容量为128个存储单元索引,其一次性向存储器写入的存储单元索引的数量为剩余空间的2/3,则上述预设时间量可以大致确定为128*(2/3)+数据传输延时(例如总线延时)。在向FIFO写入存储单元索引的状态下,可以向本地索引存储器(即该示例中的FIFO)写入存储单元索引。示例性地,每次可以写入一个存储单元索引并进行计数,随后跳转判断回收是否完成以及FIFO是否为满,直至所有存储单元索引写入完毕。
图10示意性示出了根据本公开的一些实施例的空间分配流程1000的示例流程图。在图10所示的流程图中,为简洁起见,将本地索引存储器描绘为FIFO,实际上,也可以采用其他形式的存储器。
如图10所示,在接收到空间分配请求后,空间分配模块可以确定该空间分配请求所请求分配的存储单元索引的数量(为便于描述,记为M1个)。若FIFO中的存储单元索引的数量可以满足本次请求分配的存储单元索引的数量,即大于或等于M1,则可以直接从FIFO读取M1个存储单元索引,以分配至相应外部请求源,随后可以向空间维护模块发送指示本次分配M1个存储单元索引的信息,并由空间维护模块基于所分配的M1个存储单元索引更新索引计数器,比如令索引计数器更新为“当前计数-M1”。若FIFO中的存储单元索引的数量无法满足本次请求分配的存储单元索引的数量,即小于M1,则可以从FIFO中分批次读取总计M1个存储单元索引。具体地,可以先从FIFO读取L1个存储单元索引(例如读取FIFO当前存储的所有存储单元索引或其中一部分),随后可以触发FIFO从存储器读取存储单元索引的流程。该读取过程已在前文中详述,大致而言,FIFO可以从空间维护模块读取第一指针,根据第一指针从存储器读取存储单元索引,并向空间维护模块发送针对第一指针的更新数据,该更新数据可以指示本次从存储器读取的存储单元索引的数量(假设为P1个)。空间维护模块可以更新第一指针,比如更新为“第一指针+P1”,并可以更新索引计数器为“当前计数-L1”。可以重复上述从FIFO读取存储单元索引的过程,直至本次分配的M1个存储单元索引读取完毕,可以向空间分配模块反馈响应信号,以指示存储单元索引从FIFO读取完成。
图11示意性示出了根据本公开的一些实施例的空间回收流程1100的示例流程图。在图11所示的流程图中,为简洁起见,将本地索引存储器描绘为FIFO,实际上,也可以采用其他形式的存储器。
如图11所示,在接收到空间回收请求后,空间回收模块可以确定该空间回收请求所请求回收的存储单元索引的数量(为便于描述,记为M2个)。若FIFO中的剩余空间可以满足容纳本次请求回收的存储单元索引的数量,即大于或等于M2,则可以直接向FIFO写入全部M2个存储单元索引,以完成存储单元索引的回收,随后可以向空间维护模块发送指示本次回收M2个存储单元索引的信息,并由空间维护模块基于所回收的M2个存储单元索引更新索引计数器,比如令索引计数器更新为“当前计数+M2”。若FIFO中的剩余空间无法满足容纳本次请求回收的存储单元索引的数量,即小于M2,则可以向FIFO分批次写入总计M2个存储单元索引。具体地,可以先向FIFO写入L2个存储单元索引(L2例如等于FIFO当前剩余空间量,或小于FIFO当前剩余空间量),随后可以触发FIFO向存储器写入存储单元索引的流程。该写入过程已在前文中详述,大致而言,FIFO可以从空间维护模块读取第二指针,根据第二指针向存储器写入存储单元索引,并向空间维护模块发送针对第二指针的更新数据,该更新数据可以指示本次向存储器写入的存储单元索引的数量(假设为P2个)。空间维护模块可以更新第二指针,比如更新为“第二指针+P”,并可以更新索引计数器为“当前计数+L2”。可以重复上述向FIFO写入存储单元索引的过程,直至本次回收的M2个存储单元索引写入完毕,可以向空间回收模块反馈响应信号,以指示存储单元索引向FIFO写入完成。
图2E示意性示出了根据本公开的一些实施例的存储空间管理***200E的示例框图。
如图2E所示,装置210可以包括索引生成模块218。示例性地,索引生成模块218可以被配置为根据预设规则生成存储单元索引。相应地,空间分配模块2121-1至2121-N中的每一个可以被配置为:响应于接收到空间分配请求,并且存储单元索引的已分配数量低于存储单元索引的阈值数量,令索引生成模块218生成一个或多个存储单元索引。以及,可选地,空间分配模块2121-1至2121-N中的每一个还可以被配置为:响应于存储单元索引的已分配数量与存储单元索引的待分配数量之和大于阈值数量,经由第二接口从存储器230的存储空间的第二存储区域读取至少一个存储单元索引。存储单元索引的待分配数量可以是基于所接收的空间分配请求所请求分配的空间的大小确定的,例如,假设存储空间被划分为4 KB的存储单元,且空间分配请求所请求分配的空间为64 KB,则待分配数量可以被确定为16。存储单元索引的阈值数量可以是默认值或可配置值,其可以小于或等于存储单元索引的总数量。存储单元索引的总数量与第一存储区域中的具有预设大小的存储单元的数量可以是相对应的,例如是相等的。存储单元索引的已分配数量可以理解为已分配至外部请求源220的存储单元索引的累计数量(包括通过各个空间分配模块分配的存储单元索引的数量)。比如,假设在装置上电后,累计接收到m个空间分配请求,并成功分配其中n个空间分配请求,则针对该n个空间分配请求所分配的存储单元索引的数量之和可以被视为存储单元索引的已分配数量。由此,可以允许在空间分配过程中,由本地索引生成模块根据预设规则逐步生成存储单元索引并直接用于分配,随后随着空间回收过程而逐步将所生成并分配的存储单元索引写入至存储器中存储空间的相应区域。相较于关于图2D所示的使用初始化模块217的实施例,使用索引生成模块218可以有效提升装置上电后的初始化速度,减少存储单元索引集中写入时对存储器写入带宽的独占,从而有助于提升存储空间管理***的整体效率。
如前文所提到的,存储器230中的存储空间可以被划分为具有不同预设大小的存储单元,从而可以存在对应于不同预设大小的存储单元索引。在这种实施例中,为了更便捷地管理对应于不同预设大小的存储单元索引,空间维护模块213可以包括至少两个子维护模块,每个子维护模块可以包括子索引计数器。每个子维护模块可以被配置为:基于至少两个空间管理模块中的各空间管理模块所分配或回收的一种存储单元索引的数量,维护该子维护模块中的子索引计数器,其中,一种存储单元索引所表征的存储单元具有预设大小集合中的一种预设大小。可选地,预设大小集合可以包括至少两种预设大小。相应地,子维护模块的数量可以与预设大小的数量相等,并且至少两个子维护模块与至少两种预设大小可以是一一对应的。示例性地,类似前文所描述的,每个子维护模块可以维护至少两个子索引计数器,每个子索引计数器可以对应于一个空间管理模块,以便于限定各个空间管理模块所能管理的各预设大小的存储单元索引的数量上限,进而可以限定可分配至各请求源的各预设大小的存储单元的数量上限。
在这种实施例中,每个子维护模块还可以被配置为维护子索引指针,每个子索引指针用于管理第二存储区域内的一个子区域中的存储单元索引,该子区域中的存储单元索引所表征的存储单元具有预设大小集合中的一种预设大小。示例性地,当某个空间管理模块需要经由第二接口管理存储器的第二存储区域中的对应于某预设大小的存储单元索引时,其可以向相应的子维护模块请求子索引指针,基于该子索引指针在第二存储区域的相应子区域内读取或写入存储单元索引,并向该子维护模块发送针对该子索引指针的更新数据,该更新数据可以包括本地读取或写入的存储单元索引的数量。关于借助索引指针读写存储单元索引以及索引指针的维护过程已在前文实施例中详细描述,在此不再赘述。
根据上述实施例,示意性地,图12示出了装置210的部分结构的示例架构。如图12所示,空间管理模块212-1中的空间分配模块2121-1可以包括子分配模块2121-1-1至2121-1-Q(Q为大于等于2的整数),空间回收模块2122-1可以包括子回收模块2122-1-1至2122-1-Q,以及,索引计数器2131可以包括子索引计数器2131-1至2131-Q。如上文所提及的,子索引计数器2131-1至2131-Q中的每个子索引计数器可以为一组对应于不同空间管理模块的子索引计数器,为简洁起见,在此未示出。示例性地,子分配模块2121-1-1至2121-1-Q中的每个子分配模块可以与预设大小集合中的一种预设大小相对应,并被配置为接收与相应预设大小对应的子分配请求。类似地,子回收模块2122-1-1至2122-1-Q中的每个子回收模块与预设大小集合中的一种预设大小相对应,并被配置为接收与相应预设大小对应的子回收请求。示例性地,每个子分配模块及每个子回收模块可以与对应于相同预设大小的子索引存储器交互,以从其读取存储单元索引或向其写入存储单用索引。对应于同一预设大小的子分配模块、子回收模块及子索引存储器的操作、以及子索引存储器与空间维护模块及存储器的交互类似于前文所描述的空间分配模块、空间回收模块及本地索引存储器,在此不再赘述。
在图12所示的实施例的空间管理装置210中,可以设置类似图2C、2D所示的请求分类模块215和/或其他电路模块,其可以被配置为接收空间管理请求,将空间管理请求分类为空间分配请求和空间回收请求,以及对空间分配请求和空间回收请求进行预处理。示例性地,该预处理过程可以包括:响应于接收到空间分配请求,根据空间分配请求所请求分配的空间的大小,将空间分配请求拆分为一个或多个子分配请求,其中,每个子分配请求与预设大小集合中的一种预设大小相对应;响应于接收到空间回收请求,根据空间回收请求所请求回收的空间对应的存储单元索引,将空间回收请求拆分为一个或多个子回收请求,其中,每个子回收请求与所述预设大小集合中的一种预设大小相对应。拆分后的一个或多个子分配请求可以被传递至某个空间管理模块中的空间分配模块,并由相应的子分配模块处理;拆分后的一个或多个子回收请求可以被传递至某个空间管理模块的空间回收模块,并由相应的子回收模块处理。
示例性地,针对空间分配请求,上述请求分类模块215和/或其他电路模块可以接收空间分配请求,并基于预设大小集合中的预设大小对该空间分配请求所请求分配的空间进行拆分,使得该所请求分配的空间可以被拆分为一个或多个具有相同或不同预设大小的存储单元,从而将该空间分配请求拆分为一个或多个子分配请求,每个子分配请求可以用于请求分配一种预设大小的存储单元索引。可选地,若所接收的空间分配请求无法被完全拆分为预设大小集合中的预设大小的组合,可以向上级电路模块报错;若可以完全拆分,则拆分后的子分配请求可以被传递至相应空间分配模块并由各子分配模块处理,各子分配模块处理完成后可以反馈完成信号,当接收到来自所有子分配模块的完成信号后,该请求分类模块215和/或其他电路模块可以继续处理其他空间分配请求。示例性地,以前文描述的以2 MB、512 KB、128 KB、64 KB、16 KB、4 KB粒度划分存储空间的示例为例,可以判断空间分配请求所请求分配的空间是否满足A*2MB +B*512KB +C*128KB+ D*64KB +E*16KB+F*4KB的规则,其中A、B、C、D、E、F均为大于或等于零的整数。若满足,则可以认为该空间分配请求可完全拆分,若不满足,则可以认为该空间分配请求不可完全拆分。在不可完全拆分的情况下,可以上报指示出错的信息。在可完全拆分的情况下,A、B、C、D、E、F即代表了每种预设大小的存储单元的所需数量。可选地,在对空间分配请求进行拆分时,为了进一步降低所需读取的存储单元索引的数量,并提升读取效率,可以尽可能使拆分后的存储单元的数量被最小化。例如,在上述示例中,可以令A+B+C+D+E+F的值被最小化。
示例性地,针对空间回收请求,空间回收请求中可以包含待回收的存储单元索引或可用于推导出待回收的存储单元索引的数据。由此,可以根据待回收的存储单元索引中指示预设大小的标识符或待回收的存储单元索引的所在数值范围等,确定各个待回收的存储单元索引对应的预设大小,并基于此将其划分为多个子回收请求,并传递至相应空间回收模块中的相应子回收模块处理。类似地,各子回收模块处理完成后可以反馈完成信号,当接收到来自所有子回收模块的完成信号后,该请求分类模块215和/或其他电路模块可以继续处理其他空间回收请求。
在本公开的一些实施例中,还提供了一种计算设备,其可以包括前文所描述的用于管理存储空间的装置,例如装置210等。示意性地,图13示出了计算设备1300的示例框图。如图所示,计算设备1300可以包括用于管理存储空间的装置1310,其可以如前文各种实施例描述的那样执行存储空间管理功能。计算设备1300还可以包括处理器或控制器1320,其可以被实施为CPU、MCU或类似结构,并可以用于执行各种处理或控制操作。计算设备1300还可以包括存储器1330,其可以用于存储数据,例如处理器或控制器1320在执行应用程序时所需的各种程序数据或者应用程序执行过程中使用或产生的数据等。存储器1330例如被实现为单个存储器,或者也可以被实现为两个或更多个存储器的组合。例如,存储器1330可以包括一个或多个内存储器,比如用作内存的DDR存储器或者SDRAM存储器等。用于管理存储空间的装置1310、处理器/控制器1320以及存储器1330可以通过通信线路1340连接在一起,并实现彼此之间的数据传递。示例性地,通信线路1340可以为总线(诸如AXI总线等)或其他类型的通信线路,或者可以为它们的组合。
在本公开的一些实施例中,还提供了一种用于管理存储空间的方法。示例性地,图14示出了用于管理存储空间的方法1400的示例流程图。
如图14所示,在步骤1210,可以接收来自外部请求源的空间管理请求;在步骤1220,可以根据预设规则将所接收的空间管理请求传递到至少两个空间管理模块中的一个空间管理模块,其中,至少两个空间管理模块中的每个空间管理模块被配置为:基于空间管理请求,分配或回收一个或多个存储单元索引,每个存储单元索引用于表征存储空间的第一存储区域中的一个具有预设大小的存储单元;在步骤1230,可以基于至少两个空间管理模块中的各空间管理模块所分配或回收的存储单元索引的数量,维护索引计数器。
方法1200可以具有与前述用于管理存储空间的装置相同或相似的实施例,并可以具有与之相同或相似的技术效果。为简洁起见,在此不再赘述。
在本公开的一些实施例中,还提供了一种芯片,其可以包括前文各种实施例所描述的用于管理存储空间的装置。示例性地,该芯片可以通过总线或其他方式连接至诸如CPU、GPU、MCU等的请求源,以及可选地,通过总线或其他方式连接到诸如DDR等的存储器,并可以基于前文描述的各种实施例来根据请求源的空间管理请求管理片上存储或存储在存储器中的存储单元索引,进而实现对存储器中的存储空间的管理。可选地,除了上述用于管理存储空间的装置外,该芯片还可以包括实现其他功能的电路模块或装置。
在本公开的描述中,术语“上”、“下”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开而不是要求本公开必须以特定的方位构造和操作,因此不能理解为对本公开的限制。
在本说明书的描述中,参考术语“一个实施例”、“另一个实施例”等的描述意指结合该实施例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。另外,需要说明的是,本说明书中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本公开中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种用于管理存储空间的装置,包括:
第一接口,连接外部请求源,并被配置为接收来自所述外部请求源的空间管理请求;
第二接口,连接存储器,所述存储器包括所述存储空间;
至少两个空间管理模块,其中,每个空间管理模块被配置为:基于所述空间管理请求,分配或回收一个或多个存储单元索引,每个存储单元索引用于表征所述存储空间的第一存储区域中的一个具有预设大小的存储单元;
空间维护模块,包括索引计数器,并被配置为:基于所述至少两个空间管理模块中的各空间管理模块所分配或回收的存储单元索引的数量,维护所述索引计数器,以及维护索引指针,其中,每个空间管理模块还被配置为:
基于所述空间管理请求,从所述空间维护模块获取所述索引指针;
根据所获取的索引指针所指向的位置,经由所述第二接口管理所述存储空间中的第二存储区域内的存储单元索引;以及
向所述空间维护模块发送针对所述索引指针的更新数据。
2.根据权利要求1所述的装置,其中,所述空间管理请求包括空间分配请求和空间回收请求,每个空间管理模块包括:
空间分配模块,被配置为:基于所述空间分配请求所请求分配的空间的大小,向所述外部请求源分配一个或多个存储单元索引,并向所述空间维护模块发送指示所分配的存储单元索引的数量的信息;
空间回收模块,被配置为:基于所述空间回收请求所请求回收的空间,回收一个或多个存储单元索引,并向所述空间维护模块发送指示所回收的存储单元索引的数量的信息。
3.根据权利要求1或2所述的装置,其中,所述外部请求源包括两个或更多个请求源,以及,
其中,所述至少两个空间管理模块中的每个空间管理模块与所述两个或更多个请求源中的至少一个请求源具有对应关系,并被配置为接收来自相对应的至少一个请求源的空间管理请求。
4.根据权利要求3所述的装置,其中,所述空间维护模块包括至少两个索引计数器,所述至少两个索引计数器中的每个索引计数器与所述至少两个空间管理模块具有对应关系,所述空间维护模块被进一步配置为:基于所述至少两个空间管理模块中的一个空间管理模块所分配或回收的存储单元索引的数量,维护与该空间管理模块对应的索引计数器。
5.根据权利要求1所述的装置,其中,所述维护索引指针包括:
响应于接收到来自空间管理模块的针对所述索引指针的更新数据,根据所接收的更新数据更新所述空间维护模块中的索引指针。
6.根据权利要求1或5所述的装置,其中,所述索引指针包括第一指针和第二指针,所述第一指针用于从所述第二存储区域读取存储单元索引,所述第二指针用于向所述第二存储区域写入存储单元索引。
7.根据权利要求6所述的装置,其中,所述空间管理请求包括空间分配请求和空间回收请求,每个空间管理模块包括:
空间分配模块,被配置为:基于所述空间分配请求所请求分配的空间的大小,从所述空间维护模块获取所述第一指针,并根据所述第一指针所指向的位置,经由所述第二接口从所述存储空间中的第二存储区域读取一个或多个存储单元索引;
空间回收模块,被配置为:基于所述空间回收请求所请求回收的空间,从所述空间维护模块获取所述第二指针,并根据所述第二指针所指向的位置,经由所述第二接口向所述存储空间中的第二存储区域写入一个或多个存储单元索引。
8.根据权利要求1所述的装置,其中,每个空间管理模块包括本地索引存储器,并被配置为:基于所述空间管理请求,从所述本地索引存储器读取一个或多个存储单元索引或向所述本地索引存储器写入一个或多个存储单元索引,以及
其中,所述本地索引存储器被配置为:响应于所述本地索引存储器的剩余空间的大小满足预设条件,从所述空间维护模块获取索引指针,并根据所获取的索引指针所指向的位置,经由所述第二接口管理所述存储空间中的第二存储区域内的存储单元索引。
9.根据权利要求8所述的装置,其中,所述索引指针包括第一指针和第二指针,所述本地索引存储器被进一步配置为:
响应于所述本地索引存储器的剩余空间的大小满足第一预设条件,经由所述第二接口从所述存储空间的第二存储区域读取第一预设数量的存储单元索引;
响应于所述本地索引存储器的剩余空间的大小满足第二预设条件,经由所述第二接口向所述存储空间的第二存储区域写入第二预设数量的存储单元索引。
10.根据权利要求1所述的装置,其中,所述空间维护模块还被配置为:
响应于两个或更多个空间管理模块同时请求获取同一索引指针,基于轮询机制优先向该两个或更多个空间管理模块中的一个空间管理模块提供该索引指针。
11.根据权利要求10所述的装置,其中,所述空间维护模块包括至少一个指针管理电路,每个指针管理电路用于维护一个相对应的索引指针,并包括:
请求选择电路,被配置为接收来自各空间管理模块的获取该相对应的索引指针的请求,并基于所述轮询机制输出与一个空间管理模块相关的使能信号;
更新数据选择电路,被配置为接收来自各空间管理模块的针对该相对应的索引指针的更新数据,并基于所述使能信号输出来自一个空间管理模块的更新数据;
指针更新电路,被配置为基于来自所述更新数据选择电路的更新数据,更新所存储的该相对应的索引指针。
12.根据权利要求1所述的装置,其中,所述空间维护模块包括至少两个子维护模块,每个子维护模块包括子索引计数器,并且,每个子维护模块被配置为:基于所述至少两个空间管理模块中的各空间管理模块所分配或回收的一种存储单元索引的数量,维护该子维护模块中的子索引计数器,其中,所述一种存储单元索引所表征的存储单元具有预设大小集合中的一种预设大小。
13.根据权利要求12所述的装置,其中,每个子维护模块还被配置为维护子索引指针,每个子索引指针用于管理所述第二存储区域内的一个子区域中的存储单元索引,该子区域中的存储单元索引所表征的存储单元具有所述预设大小集合中的一种预设大小。
14.一种计算设备,包括根据权利要求1-13中任一项所述的用于管理存储空间的装置。
15.一种用于管理存储空间的方法,包括:
接收来自外部请求源的空间管理请求;
根据预设规则将所接收的空间管理请求传递到至少两个空间管理模块中的一个空间管理模块,其中,所述至少两个空间管理模块中的每个空间管理模块被配置为:基于空间管理请求,分配或回收一个或多个存储单元索引,每个存储单元索引用于表征所述存储空间的第一存储区域中的一个具有预设大小的存储单元;
基于所述空间管理请求,读取索引指针并传递至所述一个空间管理模块,使得该空间管理模块根据所述索引指针所指向的位置,管理所述存储空间中的第二存储区域内的存储单元索引,并生成针对所述索引指针的更新数据;
基于所述更新数据维护所述索引指针;以及
基于至少两个空间管理模块中的各空间管理模块所分配或回收的存储单元索引的数量,维护索引计数器。
16.一种芯片,包括如权利要求1至13中任一项所述的用于管理存储空间的装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211561497.5A CN115658326B (zh) | 2022-12-07 | 2022-12-07 | 用于管理存储空间的装置及方法、计算设备、芯片 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211561497.5A CN115658326B (zh) | 2022-12-07 | 2022-12-07 | 用于管理存储空间的装置及方法、计算设备、芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115658326A CN115658326A (zh) | 2023-01-31 |
CN115658326B true CN115658326B (zh) | 2024-01-30 |
Family
ID=85019403
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211561497.5A Active CN115658326B (zh) | 2022-12-07 | 2022-12-07 | 用于管理存储空间的装置及方法、计算设备、芯片 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658326B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116880775B (zh) * | 2023-09-06 | 2023-11-24 | 腾讯科技(深圳)有限公司 | 存储空间的硬件管理模组、芯片、电子设备及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980673A (zh) * | 2017-03-27 | 2017-07-25 | 恒生电子股份有限公司 | 内存数据库表索引更新方法及*** |
CN110413536A (zh) * | 2019-06-12 | 2019-11-05 | 北京空间飞行器总体设计部 | 一种多数据格式高速并行NandFlash存储装置 |
CN110825653A (zh) * | 2018-08-09 | 2020-02-21 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
CN111949582A (zh) * | 2020-08-25 | 2020-11-17 | 海光信息技术有限公司 | 指针同步装置及方法、异步fifo电路、处理器*** |
CN113032293A (zh) * | 2019-12-24 | 2021-06-25 | 北京忆芯科技有限公司 | 缓存管理器及控制部件 |
CN113961153A (zh) * | 2021-12-21 | 2022-01-21 | 杭州趣链科技有限公司 | 一种索引数据写入磁盘的方法、装置及终端设备 |
CN115221076A (zh) * | 2022-07-25 | 2022-10-21 | 厦门大学 | 基于持久性cpu高速缓存的高性能键值存储方法及*** |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10705952B2 (en) * | 2015-11-04 | 2020-07-07 | Sandisk Technologies Llc | User space data storage management |
-
2022
- 2022-12-07 CN CN202211561497.5A patent/CN115658326B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106980673A (zh) * | 2017-03-27 | 2017-07-25 | 恒生电子股份有限公司 | 内存数据库表索引更新方法及*** |
CN110825653A (zh) * | 2018-08-09 | 2020-02-21 | 深圳大心电子科技有限公司 | 存储器管理方法以及存储控制器 |
CN110413536A (zh) * | 2019-06-12 | 2019-11-05 | 北京空间飞行器总体设计部 | 一种多数据格式高速并行NandFlash存储装置 |
CN113032293A (zh) * | 2019-12-24 | 2021-06-25 | 北京忆芯科技有限公司 | 缓存管理器及控制部件 |
CN111949582A (zh) * | 2020-08-25 | 2020-11-17 | 海光信息技术有限公司 | 指针同步装置及方法、异步fifo电路、处理器*** |
CN113961153A (zh) * | 2021-12-21 | 2022-01-21 | 杭州趣链科技有限公司 | 一种索引数据写入磁盘的方法、装置及终端设备 |
CN115221076A (zh) * | 2022-07-25 | 2022-10-21 | 厦门大学 | 基于持久性cpu高速缓存的高性能键值存储方法及*** |
Non-Patent Citations (2)
Title |
---|
How to Enable Index Scheme for Reducing the Writing Cost of DNA Storage on Insertion and Deletion;Yi-Syuan;ACM Transactions on Embedded Computing SystemsVolume 21Issue 3;1-25 * |
面向SaaS应用基于多宽表模式的多租户索引研究;张雅文;刘春霞;党伟超;白尚旺;;计算机应用与软件(第07期);69-74 * |
Also Published As
Publication number | Publication date |
---|---|
CN115658326A (zh) | 2023-01-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110858162B (zh) | 内存管理方法及装置、服务器 | |
CN115658326B (zh) | 用于管理存储空间的装置及方法、计算设备、芯片 | |
CN116302617B (zh) | 共享内存的方法、通信方法、嵌入式***以及电子设备 | |
CN115185880B (zh) | 一种数据存储方法及装置 | |
US11520520B2 (en) | Memory system and method of controlling nonvolatile memory | |
US20240241644A1 (en) | Storage device and storage system | |
CN115658328B (zh) | 用于管理存储空间的装置及方法、计算设备、芯片 | |
US20240220334A1 (en) | Data processing method in distributed system, and related system | |
CN116483740B (zh) | 内存数据的迁移方法、装置、存储介质及电子装置 | |
CN112099728A (zh) | 一种执行写操作、读操作的方法及装置 | |
CN113778688B (zh) | 内存管理***、内存管理方法、内存管理装置 | |
CN115617707B (zh) | 用于管理存储空间的装置及方法、计算设备、芯片 | |
CN115599705B (zh) | 用于管理存储空间的装置及方法、计算设备、芯片 | |
CN115658327B (zh) | 用于管理存储空间的装置及方法、计算设备、芯片 | |
CN115599556B (zh) | 用于管理存储空间的装置及方法、计算设备、芯片 | |
CN116048377A (zh) | 固态硬盘的数据处理方法及相关设备 | |
CN114281516A (zh) | 一种基于numa属性的资源分配方法及装置 | |
CN117472792A (zh) | 用于管理存储空间的装置及方法、计算设备 | |
CN113535597A (zh) | 内存管理方法、内存管理单元和物联网设备 | |
CN117472793A (zh) | 用于管理存储空间的装置及方法、计算设备 | |
US11989420B2 (en) | Memory allocation method and apparatus, electronic device, and storage medium | |
US20230176774A1 (en) | Processor, ufs control method, and computer system | |
CN117472794A (zh) | 用于管理存储空间的装置及方法、计算设备 | |
CN117785758B (zh) | Cxl模组、控制器、任务处理方法、介质和*** | |
CN117331511B (zh) | 一种存储设备及其数据传输方法、装置、***和存储介质 |
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 |