用于管理存储空间的装置及方法、计算设备、芯片与流程

文档序号:32954279发布日期:2023-01-14 15:28阅读:58来源:国知局

1.本公开涉及计算机技术领域,具体地,涉及一种用于管理存储空间的装置、计算设备、用于管理存储空间的方法和芯片。


背景技术:

2.随着计算机技术的发展,在人们的生活、工作、学习中,出现了越来越多的各种各样的计算设备。一般而言,在这些计算设备中,存在各种形式的处理器、控制器或微控制器,当它们运行应用程序以实现某种功能时,需要向内存请求一定的空间,当应用程序运行结束后,相应空间可以被释放。这便涉及到对内存空间的管理。
3.目前,内存空间的管理一般通过软件方式实现,即由cpu(central processing unit,中央处理器)或mcu(microcontroller unit,微控制单元)等运行内存管理策略,并发出指令,进而由硬件系统对指令进行处理,再通过总线实现对内存的读写操作。在这类软件实现的内存管理方案中,通常存在路径长,延时高,结构复杂等问题。


技术实现要素:

4.有鉴于此,本技术提供了一种用于管理存储空间的装置、用于管理存储空间的方法、计算设备和芯片,可以缓解、减轻或甚至消除上述问题。
5.根据本公开的一方面,提供了一种用于管理存储空间的装置,包括:第一接口,连接外部请求源,并被配置为接收来自外部请求源的空间管理请求,空间管理请求包括空间分配请求和空间回收请求;第二接口,连接存储器,存储器包括存储空间;空间分配模块,包括索引生成模块,其中,索引生成模块被配置为根据预设规则生成存储单元索引,空间分配模块被配置为:基于空间分配请求所请求分配的空间的大小和存储单元索引的已分配数量,通过令索引生成模块生成存储单元索引和/或经由第二接口从存储空间的第一存储区域读取存储单元索引,来获取一个或多个存储单元索引,其中,每个存储单元索引用于表征存储空间的第二存储区域中的一个具有预设大小的存储单元,并且存储单元索引的已分配数量为已分配至外部请求源的存储单元索引的累计数量;空间回收模块,被配置为:基于空间回收请求所请求回收的空间,经由第二接口向存储空间的第一存储区域写入一个或多个存储单元索引。
6.在一些实施例中,通过令索引生成模块生成存储单元索引和/或经由第二接口从存储空间的第一存储区域读取存储单元索引,来获取一个或多个存储单元索引包括以下各项中的至少一项:响应于存储单元索引的已分配数量小于阈值数量,令索引生成模块生成至少一个存储单元索引;响应于存储单元索引的已分配数量与存储单元索引的待分配数量之和大于阈值数量,经由第二接口从第一存储区域读取至少一个存储单元索引,其中,存储单元索引的待分配数量是基于空间分配请求所请求分配的空间的大小确定的。
7.在一些实施例中,通过令索引生成模块生成存储单元索引和/或经由第二接口从存储空间的第一存储区域读取存储单元索引,来获取一个或多个存储单元索引包括:响应
于存储单元索引的已分配数量与存储单元索引的待分配数量之和小于或等于阈值数量,令索引生成模块生成一个或多个存储单元索引;响应于存储单元索引的已分配数量大于或等于阈值数量,经由第二接口从第一存储区域读取一个或多个存储单元索引;响应于存储单元索引的已分配数量小于阈值数量、并且存储单元索引的已分配数量与存储单元索引的待分配数量之和大于阈值数量,令索引生成模块生成至少一个存储单元索引,并且经由第二接口从第一存储区域读取至少一个存储单元索引,以获取一个或多个存储单元索引,其中,所述存储单元索引的待分配数量是基于所述空间分配请求所请求分配的空间的大小确定的。
8.在一些实施例中,预设规则包括存储单元索引的初始索引值和存储单元索引的阈值数量,以及根据预设规则生成存储单元索引包括:基于初始索引值,通过累加操作,生成至多阈值数量个存储单元索引。
9.在一些实施例中,索引生成模块包括累加电路,累加电路被配置为:响应于索引生成信号有效,通过累加操作生成存储单元索引,其中,索引生成信号在存储单元索引的已分配数量小于存储单元索引的阈值数量时被置为有效。
10.在一些实施例中,累加电路包括:加法器,被配置为接收所生成的前一存储单元索引,并输出该前一存储单元索引与1的和数据;数据选择器,被配置为接收和数据,并响应于索引生成信号有效,输出和数据;累加寄存器,被配置为从数据选择器接收并存储和数据,并将和数据输出为所生成的存储单元索引。
11.在一些实施例中,上述装置还包括:配置寄存器,被配置为:在装置上电后,向空间分配模块发送以下各项中的至少一项:存储单元索引的起始索引值、存储单元索引的阈值数量、存储单元索引的终止索引值。
12.在一些实施例中,阈值数量为存储单元索引的总数量,存储单元索引的总数量与第二存储区域中的具有预设大小的存储单元的数量相对应。
13.在一些实施例中,空间分配模块还包括索引分配队列,并且空间分配模块还被配置为:将所获取的一个或多个存储单元索引存储至索引分配队列。
14.在一些实施例中,将所获取的一个或多个存储单元索引存储至索引分配队列包括:先将从存储空间的第二存储区域读取的存储单元索引存储至索引分配队列,再将由索引生成模块生成的存储单元索引存储至索引分配队列。
15.在一些实施例中,空间分配模块还被配置为:在所获取的一个或多个存储单元索引全部被存储至索引分配队列后,向外部请求源反馈索引分配队列中所存储的一个或多个存储单元索引。
16.在一些实施例中,索引生成模块包括至少两个子生成模块,每个子生成模块与预设大小集合中的一种预设大小对应,并被配置为根据预设规则生成用于表征具有该预设大小的存储单元的存储单元索引,其中,预设大小集合包括至少两种互不相等的预设大小。
17.在一些实施例中,空间分配模块包括至少两个子分配模块,每个子分配模块被配置为:接收与预设大小集合中的一种预设大小相对应的子分配请求;基于该子分配请求所请求分配的空间的大小和与相应预设大小对应的存储单元索引的已分配数量,通过令相应子生成模块生成至少一个存储单元索引和/或经由第二接口从第一存储区域中的子区域读取至少一个存储单元索引,来获取一个或多个存储单元索引,子区域与相应预设大小对应,
以及,空间回收模块包括至少两个子回收模块,每个子回收模块被配置为:接收与预设大小集合中的一种预设大小相对应的子回收请求;基于该子回收请求所请求回收的空间,经由第二接口向第一存储区域中的子区域写入一个或多个存储单元索引,该子区域与相应预设大小对应。
18.在一些实施例中,上述装置还包括空间计数模块,空间计数模块被配置为:将空间管理请求拆分为一个或多个子分配请求或者一个或多个子回收请求,其中,每个子分配请求或子回收请求与预设大小集合中的一种预设大小相对应。
19.根据本公开的另一方面,提供了一种计算设备,包括根据前述方面所提供的用于管理存储空间的装置。
20.根据本公开的又一方面,提供了一种用于管理存储空间的方法,包括:接收来自外部请求源的空间管理请求,空间管理请求包括空间分配请求和空间回收请求;响应于接收到空间分配请求,基于空间分配请求所请求分配的空间的大小和存储单元索引的已分配数量,通过令索引生成模块生成存储单元索引和/或从存储空间的第一存储区域读取存储单元索引,来获取一个或多个存储单元索引,其中,索引生成模块被配置为根据预设规则生成存储单元索引,每个存储单元索引用于表征存储空间的第二存储区域中的一个具有预设大小的存储单元,并且存储单元索引的已分配数量为已分配至外部请求源的存储单元索引的累计数量;响应于接收到空间回收请求,基于空间回收请求所请求回收的空间,向存储空间的第一存储区域写入一个或多个存储单元索引。
21.根据本公开的又一方面,提供了一种芯片,包括根据前述方面的各种实施例所描述的用于管理存储空间的装置。
22.由本公开提供的用于管理存储空间的装置可以通过第一接口接收来自外部请求源的空间分配请求和/或空间回收请求,并分别通过空间分配模块和空间回收模块处理空间分配请求和空间回收请求,其中,空间分配模块可以根据空间分配请求所请求分配的空间的大小和存储单元索引的已分配数量,令本地的索引生成模块生成一个或多个存储单元索引和/或经由第二接口从存储空间的第一存储区域读取一个或多个存储单元索引,空间回收模块可以根据空间回收请求所请求回收的空间,经由第二接口向存储空间的第一存储区域写入一个或多个存储单元索引,每个存储单元索引可以表征存储空间的第二存储区域中的一个具有预设大小的存储单元。由此,可以高效地经由硬件装置基于诸如cpu、mcu等的请求源的请求来管理存储器中存储空间的分配与回收,可以减少软件方式所带来的路径长、延时高等问题,从而有助于提升存储空间的管理效率,进而有助于提升整个计算系统的运行速度。同时,借助单独的硬件装置实施内存管理可以释放处理器、控制器或微控制器的资源,有助于实现其资源的优化配置,从而有助于提升计算系统的整体性能。此外,本公开提供的用于管理存储空间的装置具有本地索引生成模块,其可以随着空间分配请求的处理而根据预设规则逐步生成存储单元索引,而无需在装置上电后集中预先向存储器写入所有存储单元索引。这可以在保持存储单元索引的配置灵活性的同时缩减装置上电后的初始化时间,并减少向存储器集中写入存储单元索引时对带宽的独占,从而进一步有助于提升整体存储空间管理效率。
23.根据在下文中所描述的实施例,本技术的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
24.在下面结合附图对于示例性实施例的描述中,本技术的更多细节、特征和优点被公开,在附图中:图1示例性示出了相关技术中的内存管理架构的示意图;图2示意性示出了根据本公开的一些实施例的存储空间管理系统的示例框图;图3a和图3b示意性示出了根据本公开的一些实施例的存储空间的划分方案;图4示意性示出了借助第一指针和第二指针管理存储单元索引的示例方案;图5示意性示出了根据本公开的一些实施例的空间分配模块的内部结构的示例框图;图6示意性示出了根据本公开的一些实施例的索引生成模块中的电路的示例框图;图7示意性示出了根据本公开的一些实施例的存储空间管理系统的另一示例框图;图8示意性示出了根据本公开的一些实施例的用于管理存储空间的装置的另一示例框图;图9示意性示出了根据本公开的一些实施例的空间分配模块的内部结构的另一示例框图;图10示意性示出了根据本公开的一些实施例的空间分配模块的示例状态机;图11示意性示出了根据本公开的一些实施例的计算设备的示例框图;图12示意性示出了根据本公开的一些实施例的用于管理存储空间的方法的示例流程图。
具体实施方式
25.下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。应理解,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
26.图1示例性示出了相关技术中的内存管理架构100的示意图。如图1所示,在相关技术中,内存110可以直接由处理器120或类似结构经由总线130管理。示例性地,当处理器120需要向内存空间写入数据时,可以根据内部存储的内存空间管理策略确定可使用的空间,进而发出向相应内存空间写入数据的指令,该指令可以由硬件处理,并经由总线130发送至内存110,以实现数据写入。数据读取、删除等过程可以类似地实施。然而,申请人发现,通过这类方式执行内存管理存在以下缺点:第一,需占用处理器(或控制器、微控制器等)的资源来执行空间分配、回收等操作,不利于其资源的高效利用;第二,通过软件实施内存空间的分配和回收,需要硬件对指令进行处理,进而通过总线来在内存空间中进行读写操作,存在路径长、延时高、结构复杂等特点;第三,通过软件方式管理内存难以实现空间回收与空间分配的并行操作,限制了操作效率的提升;等等。
27.基于以上考虑,申请人提出了一种新的通过硬件电路实现内存管理的方案,其有助于解决或缓解上述各种问题。本公开实施例的存储空间管理装置,无需占用较多初始化
时间,无需在初始化阶段长时间占用内存写入带宽,适用于需要迅速启动运行内存管理功能的情况。
28.图2示意性示出了根据本公开的一些实施例的存储空间管理系统200的示例框图。该存储空间管理系统200包括用于管理存储空间的装置210,其可以接收来自外部请求源220的空间管理请求,并对所接收的空间管理请求进行处理,以管理存储器230中的存储空间。示例性地,存储器230可以是各种用作内存的存储器,例如双倍速率(double data rate,ddr)同步动态随机存储器等,或者也可以是其他类型的存储器。示例性地,外部请求源220可以是任何可以发起空间管理请求的设备,例如cpu、gpu、mcu等。此外,虽然在本公开的附图中仅示出了一个外部请求源,但是,可以根据具体应用需求,使用本公开的实施例所提供的装置210来接收并处理来自多个外部请求源的空间管理请求。
29.如图2所示,用于管理存储空间的装置210可以包括第一接口211、第二接口212、空间分配模块213和空间回收模块214。第一接口211可以与外部请求源220相连接,例如通过专用线路或公用线路(比如总线)相连接,并用于实现外部请求源220与装置210之间的通信,例如通过握手方式实现数据通信。第一接口211可以被配置为接收来自外部请求源220的空间管理请求,并可以被配置为将来自空间管理模块的管理结果反馈至外部请求源220。空间管理请求可以为空间分配请求或空间回收请求,管理结果可以为例如指示所分配空间的存储单元索引、空间分配失败、空间回收成功等的信息。在本公开中,空间分配请求可以指用于请求分配诸如存储器230中的一定大小的空间以供使用的请求,空间回收请求(或称为空间释放请求)可以指用于请求回收(或请求释放)诸如存储器230中的使用完毕的空间的请求。第二接口212可以被配置为与存储器230相连接,并用于实现存储器230与装置210之间的通信,例如可以将来自装置210的读取或写入请求发送至存储器230、接收来自存储器230的读取数据、接收来自存储器230的指示写入结果的信息等。
30.空间分配模块213可以包括索引生成模块2131。索引生成模块2131可以被配置为根据预设规则生成存储单元索引,并且空间分配模块213可以被配置为:基于空间分配请求所请求分配的空间的大小和存储单元索引的已分配数量,通过令索引生成模块213生成存储单元索引和/或经由第二接口212从存储器230的存储空间的第一存储区域读取存储单元索引,来获取一个或多个存储单元索引。每个存储单元索引可以用于表征存储空间的第二存储区域中的一个具有预设大小(或称之为预设粒度)的存储单元,并且存储单元索引的已分配数量可以指已分配至外部请求源的存储单元索引的累计数量。
31.在一些实施例中,空间分配模块213可以从前级电路接收空间分配请求,前级电路可以是诸如请求分类模块、空间计数模块等的电路模块,这些电路模块将在下文详细解释,在此不再赘述。当接收到空间分配请求后,空间分配模块213可以判断剩余可分配空间是否能够满足该空间分配请求所请求分配的空间的大小。例如,可以基于当前可分配的存储单元索引的数量和/或所对应的存储单元的预设大小来判断可分配空间是否大于或等于该空间分配请求所请求分配的空间的大小。若可分配空间能够满足该空间分配请求的需求,空间分配模块213可以根据存储单元索引的已分配数量来选择令本地的索引生成模块213生成一个或多个存储单元索引,或者经由第二接口212向存储器230发送读取一个或多个存储单元索引的请求并接收由存储器230反馈的一个或多个存储单元索引,或者通过两种方式的组合来获取一个或多个存储单元索引。
32.示例性地,存储单元索引的已分配数量可以为已分配至外部请求源的存储单元索引的累计数量。比如,假设在装置上电后,累计接收到m个空间分配请求,并成功分配其中n个空间分配请求,则针对该n个空间分配请求所分配的存储单元索引的数量之和可以被视为存储单元索引的已分配数量。随后,空间分配模块213可以向外部请求源反馈所获取的一个或多个存储单元索引以完成空间分配。
33.示例性地,空间分配模块213可以将存储单元索引直接反馈至外部请求源,或者,也可以根据预设规则对存储单元索引进行处理,例如将其映射为一个或多个存储单元的地址信息或者将其映射为与存储单元索引相对应的其他数据,并将处理后的数据反馈至外部请求源。
34.空间回收模块214可以被配置为:基于空间回收请求所请求回收的空间,经由第二接口212向存储器230的存储空间的第一存储区域写入一个或多个存储单元索引。
35.在一些实施例中,类似于空间分配模块213,空间回收模块214可以从诸如请求分类模块、空间计数模块等的前级电路模块接收空间回收请求。当接收到空间回收请求后,空间回收模块214可以从空间回收请求读取或根据预设规则推导得到所请求回收的存储单元对应的存储单元索引,并经由第二接口212发起向存储器230的存储空间的第一存储区域写入存储单元索引的请求,以完成空间回收,其中根据预设规则推导的过程可以为空间分配模块213处理存储单元索引的逆过程。可选地,空间回收模块214可以向外部请求源反馈指示空间回收完成的信息。
36.示例性地,存储空间管理装置210可以被实现为各种类型的硬件电路,例如形成为集成电路、封装为芯片结构等,从而可以根据需求而被使用,例如被焊接到电路板的相应引脚处或插入到电路板的相应插口中等。
37.通过装置210,可以通过硬件方式对存储器230(例如,诸如ddr的内存储器)的存储空间进行管理,可以减少软件管理方式的弊端,并可以提供一种更便捷的管理方式,有利于提升空间管理效率,节省cpu或mcu等主控制单元的处理资源,进而提升整个计算系统的操作效率,优化整个计算系统的资源配置。同时,通过存储空间管理装置210,允许在空间分配过程中,由本地索引生成模块根据预设规则逐步生成存储单元索引并直接用于分配,随后随着空间回收过程而逐步将所生成并分配的存储单元索引写入至存储器中存储空间的相应区域。相较于在装置上电后集中生成并向存储器写入存储单元索引的方案,可以有效提升装置上电后的初始化速度,减少存储单元索引集中写入时对存储器写入带宽的独占,从而有助于提升存储空间管理系统的整体效率。
38.在本公开中,空间管理可以包括空间分配和空间回收两个方面,空间分配可以借由存储单元索引的分配来实施,空间回收可以借由存储单元索引的回收来实施。进一步地,存储单元索引的分配可以理解为由空间分配模块从本地索引生成模块或存储器获取存储单元索引并反馈至外部请求源的过程,而存储单元索引的回收可以理解为由空间回收模块将与来自外部请求源的空间回收请求所请求回收的空间相对应的存储单元索引写入存储器的过程。
39.根据本公开的一些实施例,空间分配模块和空间回收模块可以借助指针来从存储器的特定区域读取存储单元索引或向该特定区域写入存储单元索引。示意性地,图3a、图3b及图4示出了根据本公开实施例的存储空间的划分方案以及基于指针的存储单元索引管理
方案。
40.如图3a所示,存储空间300可以包括第一存储区域310和第二存储区域320。可选地,存储空间300还可以包括留作他用的其他存储区域330。第二存储区域320可以被划分为多个存储单元,每个存储单元可以具有预设大小,该预设大小可以根据具体需求设置,例如被设置为4 kb,或者被设置为2 kb、8 kb、16 kb、32 kb等。第一存储区域310可以被写入多个存储单元索引,每个存储单元索引可以表征第二存储区域320中的一个存储单元。例如,当第二存储区域的大小为8 gb时,假设以4 kb粒度将其划分为多个存储单元,则共可划分为2097152个存储单元,从而共需2097152个存储单元索引。每个存储单元索引可以以4个字节(byte)存储在第一存储区域中,则在上述示例中,第一存储区域的大小可以为8 mb。
41.在一些实施例中,第二存储区域320可以被划分为多个存储单元,其中,每个存储单元具有预设大小集合中的一种预设大小。预设大小集合可以根据具体需求设置,例如可以被设置为包括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个64 kb存储单元、16384个16 kb存储单元、65536个4 kb存储单元。若为每个存储单元分配一个4字节(byte)的存储单元索引,则2 mb存储单元对应的存储单元索引需8 kb进行存储、512 kb存储单元对应的存储单元索引需16 kb进行存储、8192个128 kb存储单元对应的存储单元索引需32 kb进行存储、64 kb存储单元对应的存储单元索引需32 kb进行存储、16 kb存储单元对应的存储单元索引需64 kb进行存储、4 kb存储单元对应的存储单元索引需256 kb进行存储。由此,在上述示例中,第一存储区域的大小可以为408 kb。在这种实施例中,如图3b所示,第一存储区域310可以被划分为多个子区域311、312等,每个子区域可以仅写入与相同预设大小对应的存储单元索引。以前文所述的示例为例,可以将第一存储区域划分为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位则可以表示具体的索引值。
42.示例性地,装置210可以包括索引配置寄存器,其可以用于基于用户输入来配置上述一种或多种存储单元索引的数量和/或所对应存储单元的大小,例如,可以基于用户输入存储一种或多种存储单元索引的配置数量,并在装置上电后下发至装置210,比如下发至其中的空间分配模块213,以允许根据具体需求来灵活调整存储空间的划分方式。
43.基于上述空间划分方案,在上文所描述的8 gb空间全部被划分为4 kb存储单元的示例中,针对一示例类型的存储器,若在装置上电后集中将所有存储单元索引写入存储器,
将需要占用约41.716毫秒的时间专门用于存储单元索引的写入工作,并在该时间段内独占存储器的写入带宽;在上文所描述的8 gb空间被划分为2 mb、512 kb、128 kb、64 kb、16 kb、4 kb六种大小的存储单元的示例中,针对同一示例类型的存储器,若在装置上电后集中将所有存储单元索引写入存储器,将需要占用约2.2528毫秒的时间专门用于存储单元索引的写入工作,并在该时间段内独占存储器的写入带宽。可见,在装置上电后集中写入存储单元索引将占用较高的索引写入时间,并有损于该时段内的存储器的写入带宽的可用性。虽然相较而言,将存储空间划分为多种预设大小的存储单元可以有助于减少索引写入时间,但仍无法完全解决该问题,并且,当存储空间较大时,索引写入时间仍然可能变长。相比之下,使用本公开实施例所描述的用于管理存储空间的装置,例如图2所示的装置210,可以通过令本地索引生成模块逐步生成部分或全部存储单元索引并直接用于分配来减少在装置初始化时集中向存储器写入存储单元索引,从而有可能明显降低或完全消除上述较高的索引写入时间,并缓解或完全解决索引写入时间段内存储器的写入带宽独占问题。
44.示例性地,图4示意性示出了空间分配模块和空间回收模块借助一组第一指针和第二指针在第一存储区域或其子区域中读取和写入存储单元索引的示例方案400。如子图a所示,当装置上电后,第一指针和第二指针可以被初始化为指向区域410中的相同位置,例如均指向区域410的最小地址,或者也可以指向其他位置。如子图b所示,当空间分配请求或者由空间分配请求拆分得到的子分配请求被空间分配模块处理后,来自区域410的一定数量的存储单元索引被读取,此时第一指针将向下偏移,例如指向下一个可被读取的存储单元索引的位置。如子图c所示,当空间回收请求或者由空间回收请求拆分得到的子回收请求被空间回收模块处理后,相应的存储单元索引将被写入区域410,此时第二指针将向下偏移,例如指向下一个可写入存储单元索引的位置。如子图d所示,当第一指针和/或第二指针偏移到区域410的最大地址后,将绕回到起始位置。以上描述仅仅是示例性的,第一指针和第二指针也可以以其他方式随存储单元索引的读取和写入而偏移。应理解,图4所示的区域410可以为图3a所示的区域310,或者也可以为图3b所示的区域310的子区域311、312等。此外,示例性地,装置210还可以包括地址配置寄存器,其可以用于基于用户输入配置上述第一存储区域310或其各子区域311、312等的起始地址和终止地址(比如上文所述的最小地址和最大地址),例如,基于用户输入存储起始地址和/或终止地址,并在装置上电后向装置210(比如向其中的空间分配模块213)下发所存储的起始地址和/或终止地址,使得第一指针和第二指针可以在相应区域的起始地址和终止地址之间移动,从而允许根据具体需求灵活配置各起始地址和终止地址。
45.在一些实施例中,由空间分配模块213所执行的获取一个或多个存储单元索引的步骤可以包括以下各项中的至少一项:响应于存储单元索引的已分配数量小于阈值数量,令索引生成模块2131生成至少一个存储单元索引;响应于存储单元索引的已分配数量与存储单元索引的待分配数量之和大于阈值数量,经由第二接口212从存储器230的存储空间的第一存储区域读取至少一个存储单元索引。存储单元索引的待分配数量可以是基于所接收的空间分配请求所请求分配的空间的大小确定的,例如,假设存储空间被划分为4 kb的存储单元,且空间分配请求所请求分配的空间为64 kb,则待分配数量可以被确定为16。示例性地,上述阈值数量可以是默认值或可配置值,该阈值数量可以为小于或等于存储单元索引的总数量的值,其中存储单元索引的总数量可以根据存储器中第二存储区域中的具有预
设大小的存储单元的数量来确定。例如,假设存储器中第二存储区域包括n个可供分配的大小为m的存储单元,其中,n*m小于或等于第二存储区域的大小,则与大小为m的存储单元对应的存储单元索引的总数量将为n,上述阈值数量可以为小于或等于n的值。
46.在上述实施例中,当存储单元索引的已分配数量小于阈值数量时,可以从本地索引生成模块获取待分配数量个存储单元索引中的部分或全部,当存储单元索引的已分配数量与存储单元索引的待分配数量之和大于阈值数量时,可以从存储器中存储空间的相应区域读取待分配数量个存储单元索引中的部分或全部。由此,在阈值数量个存储单元索引未被分配完毕前,将优先令本地索引生成模块生成存储单元索引,从而保证随着空间分配请求的处理,有序且迅速地完成阈值数量个存储单元索引的生成工作,并在该阈值数量个存储单元索引生成完毕后,切换至从存储器读取存储单元索引的索引获取方式。在阈值数量小于存储单元索引的总数量的情况下,阈值数量个存储单元索引之外的存储单元索引可以在初始化阶段或其他空闲时间被写入存储器。可选地,阈值数量可以直接被设置为存储单元索引的总数量,如此,在所有存储单元索引的第一轮分配完成前,可以优先从本地索引生成模块获取存储单元索引,并在第一轮分配完成后切换至从存储器读取存储单元索引。这可以简化索引生成模块的控制逻辑,降低空间分配模块的复杂程度。
47.进一步示例性地,在一些实施例中,由空间分配模块213所执行的获取一个或多个存储单元索引的步骤可以包括:响应于存储单元索引的已分配数量与存储单元索引的待分配数量之和小于或等于阈值数量,令索引生成模块2131生成一个或多个存储单元索引;响应于存储单元索引的已分配数量大于或等于阈值数量,经由第二接口212从存储器230中的第一存储区域读取一个或多个存储单元索引;响应于存储单元索引的已分配数量小于阈值数量、并且存储单元索引的已分配数量与存储单元索引的待分配数量之和大于阈值数量,令索引生成模块2131生成至少一个存储单元索引,并且经由第二接口212从存储器230中的第一存储区域读取至少一个存储单元索引,以获取一个或多个存储单元索引。类似地,上述阈值数量可以为小于或等于存储单元索引的总数量的值。根据上述实施例,可以有序地判断何时应令索引生成模块生成存储单元索引、何时应从存储器读取存储单元索引以及何时应通过两者的组合来获取存储单元索引。
48.示例性地,可以借助图5所示的空间分配模块510的电路结构来完成从索引生成模块或存储器获取存储单元索引的选择过程。具体地,图5所示的空间分配模块包括分配电路511和索引生成模块512。示例性地,分配电路511可以从上级电路模块接收空间分配请求520,并判断当前可分配的存储单元索引的数量是否可以满足空间分配请求520所请求分配的空间的大小,若满足,则可以基于前述实施例,根据存储单元索引的已分配数量、与空间分配请求520对应的存储单元索引的待分配数量以及阈值数量,判断是否应从索引生成模块512和/或存储器530获取存储单元索引。若确定应令索引生成模块512生成一个或多个存储单元索引,则可以向索引生成模块512发送相应指令,以便索引生成模块512生成所需数目个存储单元索引。可选地,指令索引生成模块512生成存储单元索引可以借助索引生成信号实施,例如,可以将索引生成信号置为有效并向索引生成模块512发送存储单元索引的所需数目,或者,可以在一时间段内将索引生成信号置为有效,该时间段与存储单元索引的所需数目相对应,等等。若确定应从存储器530读取一个或多个从存储单元索引,则可以经由第二接口(为简洁起见,图5未示出第二接口)向存储器发送针对所需数目个存储单元索引
的读请求,并接收存储器所反馈的存储单元索引。
49.示例性地,来自索引生成模块512及存储器530的存储单元索引可以通过诸如数据选择器(比如二选一数据选择器)或其他器件被反馈至分配电路511。可选地,空间分配模块510还可以包括索引分配队列,例如图5所示的fifo 513。索引分配队列可以用于存储来自索引生成模块512和/或存储器530的存储单元索引。在这种实施例中,空间分配模块还可以被配置为:将所获取的一个或多个存储单元索引存储至索引分配队列,例如,将从索引生成模块512和/或存储器530反馈的存储单元索引写入fifo 513。随后,当与空间分配请求520对应的存储单元索引被全部写入fifo 513或者fifo 513中的存储单元索引数量达到阈值或被写满时,可以将fifo 513集中反馈至外部请求源。示例性地,空间分配模块510可以被配置为:在所获取的一个或多个存储单元索引全部被存储至索引分配队列后,向外部请求源反馈索引分配队列中所存储的一个或多个存储单元索引。由此,可以对存储单元索引进行缓存并在存储单元索引全部或部分获取完毕后统一反馈至外部请求源,这有助于减少请求源与存储空间管理装置之间的通信次数,减少对外部请求源通信带宽的频繁占用,提升数据通信效率,从而提升整体空间管理效率。
50.当需要同时从索引生成模块512和存储器530两者获取存储单元索引时,可能存在同时接收到索引生成模块512和存储器530两者反馈的存储单元索引的情况,此时,可选地,可以优先处理来自存储器530的存储单元索引。例如,可以先将从存储器530(比如其存储空间的第二存储区域)读取的存储单元索引存储至诸如fifo 513的索引分配队列,再将由索引生成模块512生成的存储单元索引存储至索引分配队列。由此,可以保障存储器530与存储空间管理装置之间的通信效率,减少反压来自存储器530的数据,以免影响两者之间通信线路的性能。例如,在存储器530经由总线与存储空间管理装置相连的情况下,反压总线数据会对总线性能产生不利影响,通过优先写入来自存储器530的数据可以减少这种不利影响。
51.如前文提及的,索引生成模块可以基于空间分配模块的指令根据预设规则生成存储单元索引。在一些实施例中,预设规则可以包括存储单元索引的初始索引值和存储单元索引的阈值数量。此时,根据预设规则生成存储单元索引可以包括:基于初始索引值,通过累加操作,生成至多阈值数量个存储单元索引。示例性地,可以基于初始索引值,重复加一操作,从而依次生成各个存储单元索引,直至生成阈值数量个存储单元索引。可选地,上述预设规则可以是预先设置的,也可以是由用户手动配置的。例如,在一些实施例中,存储空间管理装置可以包括配置寄存器,该配置寄存器可以被配置为:在装置上电后,向空间分配模块发送以下各项中的至少一项:存储单元索引的起始索引值、存储单元索引的阈值数量、存储单元索引的终止索引值。可选地,上述阈值数量可以为存储单元索引的总数量。示例性地,基于存储单元索引的起始索引值,存储单元索引的终止索引值可以被转化为存储单元索引的阈值数量或总数量,以得到上述预设规则。通过该配置寄存器,可以允许用户根据具体应用需求来灵活配置用于生成存储单元索引的预设规则。
52.在一些实施例中,索引生成模块可以借助累加电路来实施通过累加操作生成存储单元索引的操作。例如,索引生成模块中的累加电路可以被配置为:响应于索引生成信号有效,通过累加操作生成存储单元索引,其中,索引生成信号在存储单元索引的已分配数量小于存储单元索引的阈值数量时被置为有效。可选地,该阈值数量可以为小于或等于存储单
元索引总数量的值。
53.示意性地,图6示出了根据本公开的一些实施例的索引生成模块中的累加电路600的示例电路图。如图6所示,累加电路600可以包括加法器610、数据选择器620和累加寄存器630。如图所示,加法器610可以接收累加电路600所生成的前一存储单元索引,将该前一存储单元索引与1相加,并输出该前一存储单元索引与1的和数据;数据选择器620可以接收该和数据,并响应于索引生成信号有效,输出该和数据,其中索引生成信号有效可以理解为使数据选择器输出和数据所在通道的数据的有效信号;累加寄存器630可以从数据选择器接收和数据并存储该和数据,并且将该和数据输出为所生成的下一存储单元索引。由此,在索引生成信号有效的时段内,可以逐个生成所需的存储单元索引。应理解,图6所示的电路图仅仅是示例性地,也可以采用其他类似的电路结构来实现存储单元索引的生成操作。
54.图7示意性示出了根据本公开的一些实施例的存储空间管理系统700的示例框图。类似图2,存储空间管理系统700包括用于管理存储空间的装置710,其可以接收来自外部请求源720的空间管理请求,并对所接收的空间管理请求进行处理,以管理存储器730中的存储空间。装置710所包括的空间分配模块714和空间回收模块715类似于参考图2所描述的空间分配模块213和空间回收模块214,在此不再赘述。下面仅描述图7与图2不同的结构。
55.如图7所示,装置710还包括请求分类模块711。请求分类模块711可以被配置为:接收空间管理请求,当空间管理请求为空间分配请求时,将其存储至第一队列,以及,当空间管理请求为空间回收请求时,将其存储至第二队列。由此,可以对来自外部请求源的空间管理请求进行分类存储,使得空间分配请求和空间回收请求可以同时被传递至后级模块,例如传递至空间分配模块和空间回收模块,从而便利于对空间分配请求和空间回收请求进行并行处理。此外,第一队列和第二队列可以对所接收的空间分配请求和空间回收请求进行存储,如此,当外部请求源发起多次请求时,可以减少对外部请求源的反压,提高系统效率。
56.可选地,装置710还可以包括空间计数模块712。空间计数模块712可以被配置为接收空间分配请求和空间回收请求,并根据其所请求分配或回收的空间量来记录存储单元索引的分配情况。例如,空间计数模块712可以包括索引计数器,该索引计数器可以被配置为:当空间计数模块712接收到空间分配请求时,基于空间分配请求所涉及的存储单元索引的数量,在第一方向上变化;当空间计数模块712接收到空间回收请求时,基于空间回收请求所涉及的存储单元索引的数量,在第二方向上变化,其中,在第一方向或第二方向上的变化量与所分配或回收的存储单元索引数量相对应。由此,可以记录存储单元索引的分配情况,例如记录可用于分配的存储单元索引的数量。
57.装置710还可以包括总线716,其可以与空间分配模块714和空间回收模块715相连接,以便这些模块可以经由装置710的第二接口(未示出)与存储器730进行数据交互。示例性地,总线716可以是标准的noc(network on chip,片上网络)总线,或者也可以采用其他类型的总线来实现。此外,可选地,总线716还可以连接与本公开描述的各种模块相关或不相关的其他模块。
58.在一些实施例中,如前文所提及的,为了进一步提升存储空间的管理效率,可以将存储器的存储空间划分为多种具有不同预设大小的存储单元。在这种实施例中,空间分配模块中的索引生成模块可以包括至少两个子生成模块,每个子生成模块可以与预设大小集合中的一种预设大小对应,并被配置为根据预设规则生成用于表征具有该预设大小的存储
d*64kb +e*16kb+f*4kb的规则,其中a、b、c、d、e、f均为大于或等于零的整数。若满足,则可以认为该空间分配请求可完全拆分,若不满足,则可以认为该空间分配请求不可完全拆分。在不可完全拆分的情况下,可以上报指示出错的信息。在可完全拆分的情况下,a、b、c、d、e、f即代表了每种预设大小的存储单元的所需数量。可选地,在对空间分配请求进行拆分时,为了进一步降低所需读取的存储单元索引的数量,并提升读取效率,可以尽可能使拆分后的存储单元的数量被最小化。例如,在上述示例中,可以令a+b+c+d+e+f的值被最小化。
63.此外,在一些实施例中,装置800还可以包括请求分类模块830及总线850,其分别类似于参考图7描述的请求分类模块711及总线716,为简洁起见不再赘述。
64.示意性地,以前文所提到的将存储空间划分为2 mb、512 kb、128 kb、64 kb、16 kb、4 kb六种预设大小的存储单元为例,图10示出了根据本公开的一些实施例的可用于如图8所示的空间分配模块810的示例状态机1000。
65.如图10所示,当空间分配模块未接收到涉及空间分配的请求时,其可以处于空闲(idle)状态。当接收到请求时,可以依次判断是否存在4 kb、16 kb、64 kb、128 kb、512 kb、2 mb粒度的子分配请求。假设空间分配请求已被前级电路模块拆分为满足a*2mb +b*512kb +c*128kb+ d*64kb +e*16kb+f*4kb的一个或多个子分配请求,以4 kb为例,可以判断f是否为0,若为0,则跳转至判断是否存储16 kb粒度,即判断e是否为0;若不为0,则跳转至4 kb分配请求选择。在4 kb分配请求选择的状态下,可以由对应于4 kb的子分配模块处理4 kb子分配请求,该4 kb子分配请求例如用于请求分配上述f个4 kb存储单元索引。具体而言,可以根据前文所述的逻辑来选择令本地索引生成模块(例如与4 kb对应的子生成模块)生成存储单元、从存储器读取存储单元索引或同时执行这两者来获取存储单元索引。具体而言,响应于4 kb的存储单元索引的已分配数量小于阈值数量(例如4 kb存储单元索引的总数量或其他预设值),可以令索引生成模块(例如对应于4 kb的子生成模块)生成至少一个存储单元索引;响应于4 kb的存储单元索引的已分配数量与4 kb的存储单元索引的待分配数量之和大于上述阈值数量,可以经由第二接口从存储器中存储空间的第一存储区域读取至少一个存储单元索引。4 kb的存储单元索引的待分配数量是基于空间分配请求所请求分配的空间的大小确定的,例如被确定为4 kb的子分配请求所对应的存储单元索引的数量,比如上述f。进一步示例性地,可以分为以下三种情况:响应于4 kb的存储单元索引的已分配数量与4 kb的存储单元索引的待分配数量之和小于或等于上述阈值数量,令索引生成模块(例如对应于4 kb的子生成模块)生成一个或多个存储单元索引;响应于4 kb的存储单元索引的已分配数量大于或等于上述阈值数量,经由第二接口从存储器中存储空间的第一存储区域读取一个或多个存储单元索引;响应于4 kb的存储单元索引的已分配数量小于上述阈值数量、并且4 kb的存储单元索引的已分配数量与4 kb的存储单元索引的待分配数量之和大于上述阈值数量,令索引生成模块(例如对应于4 kb的子生成模块)生成至少一个存储单元索引,并且经由第二接口从第一存储区域读取至少一个存储单元索引,以获取一个或多个存储单元索引。上述一个或多个存储单元索引的数量等于4 kb子分配请求所对应的存储单元索引的数量,例如上述示例中的f个4 kb存储单元索引。在令子生成模块生成存储单元索引和/或经由第二接口向存储器发起针对存储单元索引的读请求后,可以跳转至写入fifo状态。在写入fifo状态下,可以将子生成模块所生成的和/或存储器反馈的存储单元索引写入诸如fifo的本地索引队列。可选地,如前文所提到的,可以优先写入存储器所反馈的
存储单元索引。上述一个或多个存储单元索引写入完毕后,可以跳转至下一粒度(即16 kb)的判断。类似地,16 kb分配请求选择状态、64 kb分配请求选择状态、128 kb分配请求选择状态、512 kb分配请求选择状态、2 mb分配请求选择状态以及相应的写入fifo状态下的操作可以与4 kb分配请求选择状态及相应写入fifo状态下的操作类似,在此不再重复描述。待所有粒度的操作执行完毕后,可以跳转至输出fifo数据的状态,在该状态下,可以将fifo中的存储单元索引全部输出至外部请求源,以完成本次分配过程。fifo中的存储单元索引输出完毕后,可以跳转回空闲状态。
66.可选地,针对上述存在两个或更多个预设大小的存储单元的实施例,存储空间管理装置还可以包括配置寄存器,该配置寄存器可以被配置为:在装置上电后,向空间分配模块发送以下各项中的至少一项:对应于各预设大小的存储单元索引的起始索引值、对应于各预设大小的存储单元索引的阈值数量、对应于各预设大小的存储单元索引的终止索引值,其中阈值数量可以为相应预设大小的存储单元索引的总数量。例如,在前述示例中,可以在装置上电后,下发以下寄存器:4 kb的存储单元索引的起始索引值及总数量、16 kb的存储单元索引的起始索引值及总数量、64 kb的存储单元索引的起始索引值及总数量、128 kb的存储单元索引的起始索引值及总数量、512 kb的存储单元索引的起始索引值及总数量、2 mb的存储单元索引的起始索引值及总数量。
67.在本公开的一些实施例中,还提供了一种计算设备,其可以包括前文所描述的用于管理存储空间的装置,例如装置210、710、800等。示意性地,图11示出了计算设备1100的示例框图。如图所示,计算设备1100可以包括用于管理存储空间的装置1110,其可以如前文各种实施例描述的那样执行存储空间管理功能。计算设备1100还可以包括处理器或控制器1120,其可以被实施为cpu、mcu或类似结构,并可以用于执行各种处理或控制操作。计算设备1100还可以包括存储器1130,其可以用于存储数据,例如处理器或控制器1120在执行应用程序时所需的各种程序数据或者应用程序执行过程中使用或产生的数据等。存储器1130例如被实现为单个存储器,或者也可以被实现为两个或更多个存储器的组合。例如,存储器1130可以包括一个或多个内存储器,比如用作内存的ddr存储器或者sdram存储器等。用于管理存储空间的装置1110、处理器/控制器1120以及存储器1130可以通过通信线路1140连接在一起,并实现彼此之间的数据传递。示例性地,通信线路1140可以为总线(诸如axi总线等)或其他类型的通信线路,或者可以为它们的组合。
68.在本公开的一些实施例中,还提供了一种用于管理存储空间的方法。示例性地,图12示出了用于管理存储空间的方法1200的示例流程图。
69.如图12所示,在步骤1210,可以接收来自外部请求源的空间管理请求,空间管理请求包括空间分配请求和空间回收请求;在步骤1220,响应于接收到空间分配请求,可以基于空间分配请求所请求分配的空间的大小和存储单元索引的已分配数量,通过令索引生成模块生成存储单元索引和/或从存储空间的第一存储区域读取存储单元索引,来获取一个或多个存储单元索引,其中,索引生成模块被配置为根据预设规则生成存储单元索引,每个存储单元索引用于表征存储空间的第二存储区域中的一个具有预设大小的存储单元,并且存储单元索引的已分配数量为已分配至外部请求源的存储单元索引的累计数量;在步骤1230,响应于接收到空间回收请求,可以基于空间回收请求所请求回收的空间,向存储空间的第一存储区域写入一个或多个存储单元索引。
70.方法1200可以具有与前述用于管理存储空间的装置相同或相似的实施例,并可以具有与之相同或相似的技术效果。为简洁起见,在此不再赘述。
71.在本公开的一些实施例中,还提供了一种芯片,其可以包括前文各种实施例所描述的用于管理存储空间的装置。示例性地,该芯片可以通过总线或其他方式连接至诸如cpu、gpu、mcu等的请求源以及诸如ddr等的存储器,并基于前文描述的各种实施例来根据请求源的空间管理请求管理存储单元索引,进而管理存储器中的存储空间。可选地,除了上述用于管理存储空间的装置外,该芯片还可以包括实现其他功能的电路模块或装置。
72.在本公开的描述中,术语“上”、“下”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开而不是要求本公开必须以特定的方位构造和操作,因此不能理解为对本公开的限制。
73.在本说明书的描述中,参考术语“一个实施例”、“另一个实施例”等的描述意指结合该实施例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。另外,需要说明的是,本说明书中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
74.此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
75.在本公开中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
76.以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1