掌桥专利:专业的专利平台
掌桥专利
首页

用于管理存储空间的装置及方法、计算设备

文献发布时间:2024-04-18 19:59:31


用于管理存储空间的装置及方法、计算设备

技术领域

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

背景技术

随着计算机技术的发展,在人们的生活、工作、学习中,出现了越来越多的各种各样的计算设备。一般而言,在这些计算设备中,存在各种形式的处理器、控制器或微控制器,当它们运行应用程序以实现某种功能时,需要向内存请求一定的空间,当应用程序运行结束后,相应空间可以被释放。这便涉及到对内存空间的管理。

目前,内存空间的管理一般通过软件方式实现,即由CPU(central processingunit,中央处理器)或MCU(Microcontroller Unit,微控制单元)等运行内存管理策略,并发出指令,进而由硬件系统对指令进行处理,再通过总线实现对内存的读写操作。在这类软件实现的内存管理方案中,通常存在路径长,延时高,结构复杂等问题。

发明内容

有鉴于此,本公开提供了一种用于管理存储空间的装置、用于管理存储空间的方法和计算设备,可以缓解、减轻或甚至消除上述问题。

根据本公开的一方面,提供了一种用于管理存储空间的装置,包括:第一接口,连接外部请求源,并被配置为接收来自外部请求源的空间管理请求;第二接口,连接存储器,存储器包括存储空间;初始化模块,被配置为:在储空间管理装置上电后,经由第二接口在存储空间的第一存储区域中写入多个存储单元索引,其中,每个存储单元索引用于表征存储空间的第二存储区域中的一个具有预设大小的存储单元;空间管理模块,被配置为:基于空间管理请求,经由第二接口管理第一存储区域内的存储单元索引。

在一些实施例中,空间管理请求包括空间分配请求和空间回收请求,并且其中,空间管理模块包括:空间分配模块,被配置为维护第一指针,并基于空间分配请求,经由第二接口,根据第一指针指向的位置从第一存储区域读取存储单元索引;空间回收模块,被配置为维护第二指针,并基于空间回收请求,经由第二接口,根据第二指针指向的位置向第一存储区域写入存储单元索引。

在一些实施例中,在装置上电后,第一指针和所述第二指针被初始化为指向第一存储区域中的相同位置。

在一些实施例中,空间管理请求包括空间分配请求和空间回收请求,并且,空间管理模块还包括:请求分类模块,被配置为,将空间分配请求存储至第一队列,以及,将空间回收请求存储至第二队列。

在一些实施例中,请求分类模块还被配置为,当空间分配模块处于空闲状态时,将第一队列中存储时间最早的空间分配请求传递至空间分配模块,以及,当空间回收模块处于空闲状态时,将第二队列中存储时间最早的空间回收请求传递至空间分配模块。

在一些实施例中,请求分类模块还被配置为,当第一队列中所存储的空间分配请求的数量达到第一预设阈值时,不再接收来自外部请求源的空间分配请求,以及,当第二队列中所存储的空间回收请求的数量达到第二预设阈值时,不再接收来自外部请求源的空间回收请求。

在一些实施例中,基于空间分配请求,经由第二接口,根据第一指针指向的位置从第一存储区域读取存储单元索引包括:当空间分配模块处于空闲状态时,响应于接收到空间分配请求,确定存储空间中的可用空间是否大于或等于空间分配请求所请求分配的空间;响应于存储空间中的可用空间大于或等于空间分配请求所请求分配的空间,基于空间分配请求所请求分配的空间的大小,在第一存储区域内,以第一指针指向的位置为起点,顺序读取一个或多个存储单元索引,并更新第一指针,以及,将所读取的一个或多个存储单元索引反馈至外部请求源,并令空间分配模块恢复至空闲状态;响应于存储空间中的可用空间小于空间分配请求所请求分配的空间,向外部请求源反馈指示空间分配失败的信息,并令空间分配模块恢复至空闲状态。

在一些实施例中,空间管理模块还包括:索引计数器,被配置为基于空间分配模块从第一存储区域读取的存储单元索引的数量而在第一方向上变化,以及,基于空间回收模块向第一存储区域写入的存储单元索引的数量而在第二方向上变化,第二方向与第一方向相反;以及其中,确定存储空间中的剩余可用空间是否大于或等于空间分配请求所请求分配的空间包括:至少基于索引计数器,确定可用存储单元索引所对应的存储空间是否大于或等于空间分配请求所请求分配的空间。

在一些实施例中,在第一存储区域内,以第一指针指向的位置为起点,顺序读取一个或多个存储单元索引包括:经由第二接口向存储器发送索引读取请求,索引读取请求包括第一指针和需要读取的存储单元索引的数量;经由第二接口接收来自存储器的存储单元索引,并存储至空间分配模块的索引队列。

在一些实施例中,将所读取的一个或多个存储单元索引反馈至外部请求源,并令空间分配模块恢复至空闲状态包括:向外部请求源反馈索引队列中的存储单元索引,并在所需数量的存储单元索引反馈完毕后使空间分配模块恢复至空闲状态。

在一些实施例中,基于空间回收请求,经由第二接口,根据第二指针指向的位置向第一存储区域写入存储单元索引包括:当空间回收模块处于空闲状态时,响应于接收到空间回收请求,向第一存储区域写入一个或多个存储单元索引,所写入的一个或多个存储单元索引与空间回收请求所请求回收的空间相对应;响应于与空间回收请求所请求回收的空间相对应的存储单元索引已全部写入所述第一存储区域,向外部请求源反馈指示空间回收成功的信息,并令空间回收模块恢复至空闲状态。

在一些实施例中,向第一存储区域写入一个或多个存储单元索引包括:向空间回收模块的索引队列写入一个或多个存储单元索引,所写入的一个或多个存储单元索引与空间回收请求所请求回收的空间相对应;经由第二接口向存储器发送索引写入请求,索引写入请求包括第二指针和索引队列中的存储单元索引。

在一些实施例中,用于管理存储空间的装置还包括总线,所述总线用于将所述初始化模块和所述空间管理模块连接至所述第二接口。

根据本公开的另一方面,提供了一种计算设备,包括根据前述方面的各实施例描述的用于管理存储空间的装置。

根据本公开的又一方面,提供了一种用于管理存储空间的方法,包括:在设备上电后,在存储空间的第一存储区域中写入多个存储单元索引,其中,每个存储单元索引用于表征存储空间的第二存储区域中的一个具有预设大小的存储单元;接收来自外部请求源的空间管理请求;基于空间管理请求,管理第一存储区域内的存储单元索引。

通过本公开提供的用于管理存储空间的装置,允许以硬件方式实现内存管理,有助于避免软件方式所带来的路径长、延时高等问题,从而有助于提升存储空间的管理效率,进而有助于提升整个计算系统的运行速度。同时,借助单独的硬件装置实施内存管理可以释放处理器、控制器或微控制器的资源,有助于实现其资源的优化配置,从而有助于提升计算系统的整体性能。具体而言,本公开提供的用于管理存储空间的装置可以通过硬件接口接收来自外部请求源的空间管理请求,并通过管理第一存储区域内的存储单元索引来实现对存储空间的管理(例如分配和回收)。这可以实现对内存空间的快捷管理。

根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。

附图说明

在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:

图1示例性示出了相关技术中的内存管理架构的示意图;

图2示意性示出了根据本公开的一些实施例的存储空间管理系统的示例框图;

图3A示意性示出了根据本公开的一些实施例的存储空间的划分方案;

图3B示意性示出了根据本公开的一些实施例的初始化模块的示例流程图;

图4示意性示出了根据本公开的一些实施例的存储空间管理系统的另一示例框图;

图5A-5D示意性示出了借助第一指针和第二指针管理存储单元索引的示例方案;

图6示意性示出了根据本公开的一些实施例的请求分类模块的示例框图;

图7A示意性示出了根据本公开的一些实施例的空间分配模块的空间分配过程的示例流程图;

图7B示意性示出了根据本公开的一些实施例的用于空间分配模块的示例状态机;

图8示意性示出了根据本公开的一些实施例的空间分配模块的示例框图;

图9A示意性示出了根据本公开的一些实施例的空间回收模块的空间回收过程的示例流程图;

图9B示意性示出了根据本公开的一些实施例的用于空间回收模块的示例状态机;

图10示意性示出了根据本公开的一些实施例的空间回收模块的示例框图;

图11示意性示出了根据本公开的一些实施例的计算设备的示例框图;

图12示意性示出了根据本公开的一些实施例的空间管理方法的示例流程图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。应理解,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

图1示例性示出了相关技术中的内存管理架构100的示意图。如图1所示,在相关技术中,内存110可以直接由处理器120或类似结构经由总线130管理。示例性地,当处理器120需要向内存空间写入数据时,可以根据内部存储的内存空间管理策略确定可使用的空间,进而发出向相应内存空间写入数据的指令,该指令可以由硬件处理,并经由总线130发送至内存110,以实现数据写入。数据读取、删除等过程可以类似地实施。然而,申请人发现,通过这类方式执行内存管理存在以下缺点:第一,需占用处理器(或控制器、微控制器等)的资源来执行空间分配、回收等操作,不利于其资源的高效利用;第二,通过软件实施内存空间的分配和回收,需要硬件对指令进行处理,进而通过总线来在内存空间中进行读写操作,存在路径长、延时高、结构复杂等特点;第三,通过软件方式管理内存难以实现空间回收与空间分配的并行操作,限制了操作效率的提升;等等。

基于以上考虑,申请人提出了一种通过硬件电路实现内存管理的方案,其有助于解决或缓解上述各种问题。

图2示意性示出了根据本公开的一些实施例的存储空间管理系统200的示例框图。该存储空间管理系统200包括用于管理存储空间的装置210,其可以接收来自外部请求源220的空间管理请求,并对所接收的空间管理请求进行处理,以管理存储器230中的存储空间。示例性地,存储器230可以是各种用作内存的存储器,例如双倍速率(Double DataRate,DDR)同步动态随机存储器等,或者也可以是其他类型的存储器。示例性地,外部请求源220可以是任何可以发起空间管理请求的设备,例如CPU、MCU等。

如图2所示,用于管理存储空间的装置210可以包括第一接口211、第二接口212、初始化模块213和空间管理模块214。第一接口211可以与外部请求源220相连接,例如通过专用线路或公用线路(比如总线)相连接,并用于实现外部请求源220与装置210之间的通信,例如通过握手方式实现数据通信。第一接口211可以被配置为接收来自外部请求源220的空间管理请求,并可以被配置为将来自空间管理模块的管理结果反馈至外部请求源220,管理结果可以为例如指示所分配空间的存储单元索引、空间分配失败、空间回收成功等的信息。第二接口212可以被配置为与存储器230相连接,并用于实现存储器230与装置210之间的通信,例如可以将来自装置210的读取或写入请求发送至存储器230、将来自存储器230的数据反馈至装置210等。

初始化模块213可以被配置为,在装置210上电后,经由第二接口212,在存储器230的存储空间的第一存储区域中写入多个存储单元索引,其中,每个存储单元索引用于表征存储空间的第二存储区域中的一个具有预设大小的存储单元。示例性地,当硬件电路上电复位后,初始化模块213可以先将存储单元索引写入存储器230的第一存储区域中,该第一存储区域可以是预先指定的区域,并且其大小和位置可以根据需要进行调整。当所有存储单元索引写入完毕后,装置210可以开始响应来自外部请求源220的空间管理请求,并且此后初始化模块213可以不再工作,直至硬件电路断电,并在下次上电后再次启动。示例性地,当初始化模块213完成上述索引写入操作后,可以向前级电路(例如下文描述的请求分类模块或其他电路模块)发出信号,以告知前级电路可以开始接收空间管理请求。

示例性地,图3A示出了存储空间300的示意图。如图所示,存储空间300可以包括第一存储区域310和第二存储区域320。可选地,存储空间300还可以包括留作他用的其他存储区域330。第二存储区域320可以被划分为多个存储单元,每个存储单元可以具有预设大小,该预设大小可以根据具体需求设置,例如被设置为4 KB,或者被设置为2 KB、8 KB、16 KB、32 KB等。第一存储区域310可以被写入多个存储单元索引,每个存储单元索引可以表征第二存储区域320中的一个存储单元。例如,当第二存储区域的大小为8Gb时,假设以4 KB粒度将其划分为多个存储单元,则共可划分为2097152个存储单元,从而共需2097152个存储单元索引。每个存储单元索引可以以4个字节(byte)存储在第一存储区域中,则第一存储区域的大小可以为8 MB。

示例性地,图3B示出了初始化模块213的初始化流程2130的示意图。如图3B所示,在步骤2131,可以等待系统上电并完成初始化,或者说,等待系统复位。随后,在步骤2132,可以根据预先存储的索引数据或预设逻辑向存储器的第一存储区域写入存储单元索引。最后,在步骤2133,当所有存储单元索引写入完毕后,可以向前级电路模块反馈完成指示存储单元写入完毕的信号,随后装置210可以开始接收并处理来自外部请求源的空间管理请求。

空间管理模块214可以被配置为,基于空间管理请求,经由第二接口212,管理存储器230中的第一存储区域内的存储单元索引。示例性地,空间管理模块214可以基于空间管理请求,从第一存储区域读取存储单元索引或向其写入存储单元索引,以完成对第二存储区域中的相应存储单元的分配和回收。

示例性地,存储空间装置210可以被实现为各种类型的硬件电路,例如形成为集成电路、封装为芯片结构等,从而可以根据需求而被使用,例如被焊接到电路板的相应引脚处或插入到电路板的相应插口中等。

通过装置210,可以通过硬件方式对存储器230(例如,诸如DDR的内存储器)的存储空间进行管理,可以避免软件管理方式的弊端,并可以提供一种更便捷的管理方式,有利于提升空间管理效率,节省CPU或MCU等主控制单元的处理资源,进而提升整个计算系统的操作效率,优化整个计算系统的资源配置。

图4示意性示出了根据本公开的一些实施例的存储空间管理系统400的另一示例框图。类似于图2,存储空间管理系统400包括用于管理存储空间的装置410、外部请求源420和存储器430,其中,外部请求源420和存储器430类似于图2中的外部请求源220和存储器230,在此不再赘述。装置410包括初始化模块412,其类似于图2中的初始化模块213,在此亦不再赘述。另外,为简洁起见,在图4中,省略了对第一接口和第二接口的绘制。

如图4所示,空间管理模块可以包括空间分配模块413和空间回收模块414,其分别用于处理空间管理请求中的空间分配请求和空间回收请求。空间分配请求可以指用于请求分配存储器430中的一定大小的空间以供使用的请求,空间回收请求(或称为空间释放请求)可以指用于请求回收(或请求释放)存储区430中的使用完毕的空间的请求。在一些实施例中,空间分配模块413可以被配置为维护第一指针,并基于空间分配请求,经由第二接口,根据第一指针指向的位置从第一存储区域读取存储单元索引;空间回收模块414可以被配置为维护第二指针,并基于空间回收请求,经由第二接口,根据第二指针指向的位置向第一存储区域写入存储单元索引。由此,可以通过分离的空间分配模块413和空间回收模块414分别管理空间分配请求和空间回收请求,并分别借助第一指针和第二指针来管理第一存储区域内的存储单元索引的读取和写入,从而可以借助硬件电路的并行处理,使得在同一时间,可以同时处理来自外部请求源的空间分配请求和空间回收请求。由此,有助于进一步提升存储空间管理效率。

图5A-5D示意性示出了借助第一指针和第二指针管理存储单元索引在第一存储区域中的读取和写入过程的示例方案。如图5A中的示意框图500A所示,当装置上电后,第一指针和第二指针可以被初始化为指向第一存储区域510中的相同位置,例如均指向第一存储区域510的最小地址,或者也可以指向其他位置。如图5B中的示意框图500B所示,当来自外部请求源的空间分配请求被空间分配模块处理后,来自第一存储区域510的一定数量的存储单元索引被读取,此时第一指针将向下偏移,例如指向下一个可被读取的存储单元索引的位置。如图5C中的示意框图500C所示,当来自外部请求源的空间回收请求被空间回收模块处理后,相应的存储单元索引将被写入第一存储区域510,此时第二指针将向下偏移,例如指向下一个可写入存储单元索引的位置。如图5D中的示意框图500D所示,当第一指针和/或第二指针偏移到第一存储区域510的最大地址后,将绕回到起始位置。应理解,图5A-5D仅仅是示意性地,第一指针和第二指针也可以以其他方式随存储单元索引的读取和写入而偏移,例如,也可以按从第一存储区域的最大地址到最小地址的顺序偏移等。

回到图4,在一些实施例中,空间管理请求可以包括空间分配请求和空间回收请求,并且空间管理模块还可以包括请求分类模块411。请求分类模块411可以被配置为将空间分配请求存储至第一队列,以及,将空间回收请求存储至第二队列。由此,可以对来自外部请求源的空间管理请求进行分类存储,使得空间分配请求和空间回收请求可以同时被传递至后级模块,即空间分配模块和空间回收模块,从而进一步便利于对空间分配请求和空间回收请求进行并行处理。此外,第一队列和第二队列可以对所接收的空间分配请求和空间回收请求进行存储,如此,当外部请求源发起多次请求时,可以减少对外部请求源的反压,提高系统效率。

示例性地,图6示意性示出了根据本公开的一些实施例的请求分类模块411的示例框图。如图6所示,请求分类模块411可以包括第一队列4111(或称之为分配队列)和第二队列4112(或称之为回收队列)。示例性地,第一队列4111和第二队列4112可以分别通过一个FIFO(First Input First Output,先进先出)存储器实现。示例性地,请求分类模块411可以经由第一接口通过握手方式接收来自外部请求源420的空间管理请求,然后可以将所接收的空间管理请求中的空间分配请求存储至第一队列4111,并将所接收的空间管理请求中的空间回收请求存储至第二队列4112。可选地,请求分类模块411可以与第一接口相连接,或者可以包括该第一接口。随后,当后级的空间分配模块处于空闲状态时,可以将第一队列中存储时间最早(即,最先写入)的空间分配请求传递至空间分配模块;以及,当后级的空间回收模块处于空闲状态时,将第二队列中存储时间最早(即,最先写入)的空间回收请求传递至空间分配模块。

可选地,由于FIFO存储空间的有限性,可以为第一队列4111和第二队列4112设置预满门限。例如,假设第一队列4111和第二队列4112分别可以接收10个请求,可以将预满门限设置为9(或者也可以设置为其他值)。如此,当第一队列4111中所存储的空间分配请求的数量达到相应预满门限(或被称为第一阈值)时,第一队列4111可以进行预满反压,可以不再接收来自外部请求源的空间分配请求;当第二队列4112中所存储的空间回收请求的数量达到相应预满门限(或被称为第二阈值)时,第二队列4112可以进行预满反压,可以不再接收来自外部请求源的空间回收请求。或者,当第一队列4111和第二队列4112中的任一队列中所存储的请求的数量达到相应预满门限时,即,当第一队列4111中的空间分配请求的数量达到第一阈值或第二队列4112中的空间回收请求的数量达到第二阈值时,请求分类模块411可以反压前级,不再接收来自外部请求源420的空间管理请求。应理解,上述第一队列4111和第二队列4112的容量和预满门限仅仅是示意性的,实际上,第一队列4111和第二队列4112可以具有其他容量,并且两者的容量可以相等或不等,并且可以具有其他大小的预满门限,并且两者的预满门限可以相等或不等。通过反压机制,可以防止请求分类模块411接收到超出其存储能力的空间分配请求和/或空间回收请求,从而避免出现处理错误。

在一些实施例中,空间分配模块413所执行的空间分配操作可以通过图7A所示的过程700A来实施。

首先,在步骤710,当空间分配模块处于空闲状态时,响应于接收到空间分配请求,可以确定存储空间中的可用空间是否大于或等于空间分配请求所请求分配的空间。示例性地,空闲状态可以指空间分配模块413未执行空间分配操作的状态,即空间分配模块413中没有需要处理或正在处理的空间分配请求。当空间分配模块413处于空闲状态时,其可以向前级电路(例如请求分类模块)发出信号,例如,可以通过发送信号或置高相关信号线等方式来指示当前处于空闲状态,并接收来自该前级电路的空间分配请求,例如接收来自请求分类模块中的第一队列的空间分配请求。示例性地,可以借助第一指针和第二指针来判断存储空间中是否存在可用空间以及可用空间是否大于或等于空间分配请求所请求分配的空间。例如,当第一指针和第二指针不重合时,可以判定第一存储区域中存在可分配的存储单元索引,即可以判定第二存储区域内存在可分配的可用空间,进一步地,可以通过第一指针与第二指针的差值来确定可用存储单元索引的数量,进而可以判定可用存储单元索引的数量是否大于或等于空间分配请求所请求分配的空间对应的存储单元索引数量,或者可以判定可用存储单元索引的数量对应的存储空间是否大于或等于空间分配请求所请求分配的空间;当第一指针和第二指针重合时,可能存在两种情况,即,所有存储单元索引均已被分配或所有存储单元索引均可用,或者说,无可用存储空间或所有存储空间均可用,此时,可以借助索引计数器来确定当前存储空间处于哪种情况。索引计数器可以是独立于空间分配模块和空间回收模块的结构,可以被配置为基于空间分配模块从第一存储区域读取的存储单元索引的数量而增大,以及,基于空间回收模块向第一存储区域写入的存储单元索引的数量而减小;或者恰好相反,即,随存储单元索引的读取而减小,并随存储单元索引的写入而增大。由此,索引计数器可以指示被分配和/或被回收的存储空间所对应的存储单元索引的数量。因此,当第一指针和第二指针不重合时,可以通过索引计数器是否为零或者是否为最大值来确定是否存在可用空间。或者,也可以在不使用第一指针和第二指针的情况下,直接通过索引计数器来判断是否存在可用空间以及可用空间是否大于或等于空间分配请求所请求分配的空间,例如,直接通过索引计数器所指示的可用索引数量,来判断可用索引对应的存储空间是否大于或等于空间分配请求所请求分配的空间。

随后,在步骤720,响应于确定存储空间中的可用空间大于或等于空间分配请求所请求分配的空间,可以基于空间分配请求所请求分配的空间的大小,在第一存储区域内,以第一指针指向的位置为起点,顺序读取一个或多个存储单元索引,并更新所述第一指针。接着,可以将所读取的一个或多个存储单元索引反馈至外部请求源,并令空间分配模块恢复至空闲状态。示例性地,可以基于空间分配请求所请求分配的空间的大小,确定存储单元索引的所需数量(可选地,该步骤也可在步骤710中完成),并经由第二接口向存储器发送索引读取请求,索引读取请求可以包括第一指针和需要读取的存储单元索引的数量。例如,可以基于空间分配请求所请求分配的空间的大小与第二存储区域中的存储单元的预设大小,来确定存储单元的所需数量,也即确定存储单元索引的所需数量。可选地,当存储单元索引的所需数量较大时,可以依次向存储器发送两次或更多次索引读取请求,使得该两次或更多次索引读取请求所涉及的存储单元索引的总数等于所确定的存储单元索引的所需数量。然后,可以经由第二接口接收存储器所反馈的存储单元索引,并存储至所述空间分配模块的索引队列。例如,当索引读取请求被发送至存储器后,存储器可以响应于该索引读取请求,反馈相应的存储单元索引数据,空间分配模块413可以接收这些数据,并将其暂时存储在本地索引队列中,以便发送至外部请求源420。示例性地,当本地索引队列的剩余空间大于或等于来自存储器的存储单元索引所需的存储空间时,可以正常接收并存储这些来自存储器的存储单元索引;反之,当空间不足时,可以暂不接收,并等待直至本地索引队列存在满足需求的空间。之后,可以向外部请求源反馈索引队列中的存储单元索引,并在所需数量的存储单元索引反馈完毕后使空间分配模块恢复至空闲状态。示例性地,当存储单元索引数量较多时,可以分批次向外部请求源进行反馈。换言之,随着存储单元索引被从存储器430读取至本地索引队列,本地索引队列中的存储单元索引可以被分批次反馈至外部请求源420。通过本地索引队列的缓存机制,可以缓解存储器与存储空间管理装置之间的数据交互速度与外部请求源于存储空间管理装置之间的数据交互速度彼此不匹配、或者两者空闲时间不完全一致等问题,从而也有助于进一步提升空间管理效率。此外,第一指针的使用及更新方式已在图5A-5D中示出,并在相关段落中予以描述,在此不再赘述。

或者,在步骤730,响应于存储空间中的可用空间小于空间分配请求所请求分配的空间,可以向外部请求源反馈指示空间分配失败的信息,并令空间分配模块恢复至空闲状态。示例性地,指示空间分配失败的信息可以通过预设字符串或其他方式反馈至外部请求源,并且,外部请求源在接收到该信息后,可以根据情况选择是否重传该空间分配请求。

示例性地,空间分配模块413可以由图7B所示的状态机700B来控制。

如图7B所示,当未接收到任何空间分配请求时,状态机700B可以处于IDLE状态,即上述空闲状态。当接收到空间分配请求时,可以判断当前可用空间是否满足本次空间分配请求的需求,即当前可用空间是否大于或等于本次空间分配请求所请求分配的空间。若否,则可以向外部请求源反馈指示空间分配失败的信息,并令状态跳转会IDLE状态;若是,则可以从存储器读取存储单元索引,并将读取的存储单元索引存储至本地索引队列。随后,在本地索引队列非空的情况下,可以分配存储单元索引,即,向外部请求源反馈本地索引队列中的存储单元索引,直至所有存储单元索引反馈完毕,再次恢复至IDLE状态。状态机700B中所涉及的各种操作已在参考图7A的各种实施例中予以描述,在此不再赘述。

在一些实施例中,空间分配模块可以通过图8所示的电路结构或其他类似结构来实施。

如图8所示,空间分配模块800可以包括读地址维护电路810、总线数据整理电路820、响应处理电路830和FIFO 840。读地址维护电路810可以根据前文参考图5A-5D描述的方式来管理第一指针。总线数据整理电路820可以对所接收的空间分配请求进行处理,以生成遵循相应总线协议的控制信号,该控制信号例如可以包括前文所提到的针对存储空间索引的索引读取请求,并且该控制信号可以经由相应总线结构被发送至存储器(例如DDR存储器等)。FIFO 840可以充当前文提到的空间分配模块的本地索引队列,并用于缓存来自存储器的存储单元索引。示例性地,存储器可以响应于控制信号而向空间分配模块800发送相应的数据信号,该数据信号可以包括与索引读取请求对应的一个或多个存储单元索引。以及示例性地,当所有存储单元索引发送完毕后,存储器可以向空间分配模块800发送指示本次索引读取请求处理完毕(或者说,存储单元索引发送完毕)的响应信号。响应处理模块830可以接收该响应信号,并基于该响应信号向外部请求源反馈完成信号,例如经由上级电路模块向外部请求源反馈完成信号,该完成信号可以包括以下信息中的至少一项:指示本次空间分配请求处理完毕的信息、从存储器读取的存储单元索引等。替代地或附加地,空间分配模块800也可以包括其他电路,只要可以实施前文各种实施例描述的空间分配模块的功能即可。

在一些实施例中,空间回收模块414所执行的空间回收操作可以通过图9A所示的过程900A来实施。

在步骤910,当空间回收模块处于空闲状态时,响应于接收到空间回收请求,向第一存储区域写入一个或多个存储单元索引,所写入的一个或多个存储单元索引与空间回收请求所请求回收的空间相对应。示例性地,空间回收请求可以包括待写入的存储单元索引,或者,可以包括可以被转换为待写入的存储单元索引的其他信息。示例性地,需要写入第一存储区域的存储单元索引可以先被缓存在空间回收模块414的本地索引队列中。例如,在接收到空间回收请求时,可以向空间回收模块的索引队列写入一个或多个存储单元索引,所写入的一个或多个存储单元索引与空间回收请求所请求回收的空间相对应;然后,可以经由第二接口向存储器发送索引写入请求,索引写入请求包括第二指针和索引队列中的存储单元索引。可选地,当需要写入的索引数量较多时,可以分批次地向第一存储区域写入该多个存储单元索引,即,可以向存储器发送多次索引写入请求。可选地,将存储单元索引缓存至本地索引队列和将本地索引队列中的存储单元索引写入第一存储区域的过程可以并行地执行,直至所有待写入的存储单元索引均被写入到第一存储区域为止。

在步骤920,响应于与空间回收请求所请求回收的空间相对应的存储单元索引已全部写入第一存储区域,向外部请求源反馈指示空间回收成功的信息,并令空间回收模块恢复至空闲状态。示例性地,空间回收模块414在向外部请求源反馈指示空间回收成功的信息后,可以在接收到来自外部请求源的确认消息后再恢复至空闲状态,以确保外部请求源已获知该信息。

示例性地,空间回收模块414可以由图9B所示的状态机900B来控制。

如图9B所示,当未接收到任何空间回收请求时,状态机900B可以处于IDLE状态。当接收到空间回收请求时,可以发起针对存储单元索引的写操作。示例性地,如前文所述,可以先将空间回收请求所涉及的存储单元索引写入本地索引队列,然后可以基于本地索引队列中的存储单元索引生成索引写入请求。接着可以发起针对存储器的写入操作,即,通过发送索引写入操作来将本地索引队列中的存储单元索引写入存储器中的第一存储区域,直至所有存储单元索引写入完毕,再次恢复至IDLE状态。状态机900B中所涉及的各种操作已在参考图9A的各种实施例中予以描述,在此不再赘述。

在一些实施例中,空间回收模块可以通过图10所示的电路结构或其他类似结构来实施。

如图10所示,空间回收模块1000可以包括写地址维护电路1010、总线数据整理电路1020、响应处理电路1030和FIFO 1040。写地址维护电路1010可以根据前文参考图5A-5D描述的方式来管理第二指针。总线数据整理电路1020可以对所接收的空间回收请求进行处理,以生成遵循相应总线协议的控制信号和数据信号,该控制信号例如可以包括前文所提到的针对存储空间索引的索引写入请求,该数据信号可以包括要写入存储器的第一存储区域的存储单元索引,并且该控制信号和数据信号可以经由相应总线结构被发送至存储器(例如DDR存储器等)。FIFO 1040可以充当前文提到的空间回收模块的本地索引队列,并用于缓存与来自外部请求源的空间回收请求相关的存储单元索引,即,空间回收请求所请求回收的存储单元索引。示例性地,存储器可以响应于控制信号和数据信号而执行索引写入操作,并在写入完成后向空间分配模块800发送相应的响应信号。响应处理模块1030可以接收该响应信号,并基于该响应信号向外部请求源反馈完成信号,例如经由上级电路模块向外部请求源反馈完成信号,该完成信号可以包括指示本次空间回收请求处理完毕的信息等。替代地或附加地,空间分配模块1000也可以包括其他电路,只要可以实施前文各种实施例描述的空间分配模块的功能即可。

在一些实施例中,用于管理存储空间的装置还可以包括总线,其可以将初始化模块和空间管理模块连接至第二接口。示例性地,如图4所示,总线415可以与初始化模块412、空间分配模块413及空间回收模块414相连接,以便这些模块可以经由装置410的第二接口(未示出)与存储器430进行数据交互。示例性地,总线415可以是标准的NOC(Network onChip,片上网络)总线,或者也可以采用其他类型的总线来实现。此外,可选地,总线415还可以连接与本公开描述的各种模块相关或不相关的其他模块。

在本公开的一些实施例中,还提供了一种计算设备,其可以包括前文所描述的用于管理存储空间的装置,例如装置210、410。示意性地,图11示出了计算设备1100的示例框图。如图所示,计算设备1100可以包括用于管理存储空间的装置1110,其可以如前文各种实施例描述的那样执行存储空间管理功能。计算设备1100还可以包括处理器或控制器1120,其可以被实施为CPU、MCU或类似结构,并可以用于执行各种处理或控制操作。计算设备1100还可以包括存储器1130,其可以用于存储数据,例如处理器或控制器1120在执行应用程序时所需的各种程序数据或者应用程序执行过程中使用或产生的数据等。存储器1130例如被实现为单个存储器,或者也可以被实现为两个或更多个存储器的组合。例如,存储器1130可以包括一个或多个内存储器,比如用作内存的DDR存储器或者SDRAM存储器等。用于管理存储空间的装置1110、处理器/控制器1120以及存储器1130可以通过通信线路1140连接在一起,并实现彼此之间的数据传递。示例性地,通信线路1140可以为总线(诸如AXI总线等)或其他类型的通信线路,或者可以为它们的组合。

在本公开的一些实施例中,还提供了一种用于管理存储空间的方法。示例性地,图12示出了用于管理存储空间的方法1200的示例流程图。

如图12所示,在步骤1210,可以在设备上电后,在存储空间的第一存储区域中写入多个存储单元索引,其中,每个存储单元索引用于表征存储空间的第二存储区域中的一个具有预设大小的存储单元;在步骤1220,可以接收来自外部请求源的空间管理请求;在步骤1230,可以基于空间管理请求,管理第一存储区域内的存储单元索引。

方法1200可以具有与前述用于管理存储空间的装置相同或相似的实施例,并可以具有与之相同或相似的技术效果。为简洁起见,在此不再赘述。

在本公开的描述中,术语“上”、“下”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开而不是要求本公开必须以特定的方位构造和操作,因此不能理解为对本公开的限制。

在本说明书的描述中,参考术语“一个实施例”、“另一个实施例”等的描述意指结合该实施例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。另外,需要说明的是,本说明书中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。

在本公开中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

相关技术
  • 一种可视化藤茶活性成分的提取制备方法
  • 一种活性生物基含氯均三嗪型大分子染料的制备方法
  • 一种含茶、橙活性成分的涤纶大生物纤维及其制备方法
  • 一种含茶、橙活性成分的涤纶大生物纤维及其制备方法
技术分类

06120116522983