CN115599556B - 用于管理存储空间的装置及方法、计算设备、芯片 - Google Patents

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

Info

Publication number
CN115599556B
CN115599556B CN202211561506.0A CN202211561506A CN115599556B CN 115599556 B CN115599556 B CN 115599556B CN 202211561506 A CN202211561506 A CN 202211561506A CN 115599556 B CN115599556 B CN 115599556B
Authority
CN
China
Prior art keywords
data
index
space
storage unit
unit
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
Application number
CN202211561506.0A
Other languages
English (en)
Other versions
CN115599556A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202211561506.0A priority Critical patent/CN115599556B/zh
Publication of CN115599556A publication Critical patent/CN115599556A/zh
Application granted granted Critical
Publication of CN115599556B publication Critical patent/CN115599556B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5022Mechanisms to release resources

Abstract

本公开公开了一种用于管理存储空间的装置及方法、计算设备、芯片。该装置包括:请求源接口,连接外部请求源,并被配置为接收来自外部请求源的空间管理请求;索引映射模块,被配置为存储索引映射数据,索引映射数据包括多个数据单元,每个数据单元对应于存储空间中的一个具有预设大小的存储单元;空间管理模块,被配置为根据空间管理请求,将索引映射数据中的至少一个数据单元更新为第一值或第二值,第一值指示与数据单元对应的存储单元处于可分配状态,第二值指示与数据单元对应的存储单元处于已分配状态。通过这种装置,允许以较小的存储空间在本地存储各个存储单元的状态,从而能够在减少过长的读写路径的同时减少消耗过多本地存储资源。

Description

用于管理存储空间的装置及方法、计算设备、芯片
技术领域
本公开涉及计算机技术领域,具体地,涉及一种用于管理存储空间的装置、计算设备、用于管理存储空间的方法和芯片。
背景技术
随着计算机技术的发展,在人们的生活、工作、学习中,出现了越来越多的各种各样的计算设备。一般而言,在这些计算设备中,存在各种形式的处理器、控制器或微控制器,当它们运行应用程序以实现某种功能时,需要向内存请求一定的空间,当应用程序运行结束后,相应空间可以被释放。这便涉及到对内存空间的管理。
目前,内存空间的管理一般通过软件方式实现,即由CPU(central processingunit,中央处理器)或MCU(Microcontroller Unit,微控制单元)等运行内存管理策略,并发出指令,进而由硬件系统对指令进行处理,再通过总线实现对内存的读写操作。在这类软件实现的内存管理方案中,通常存在路径长,延时高,结构复杂等问题。
发明内容
有鉴于此,本公开提供了一种用于管理存储空间的装置、用于管理存储空间的方法、计算设备和芯片,可以缓解、减轻或甚至消除上述问题。
根据本公开的一方面,提供了一种用于管理存储空间的装置,包括:请求源接口,连接外部请求源,并被配置为接收来自外部请求源的空间管理请求;索引映射模块,被配置为存储索引映射数据,索引映射数据包括多个数据单元,每个数据单元对应于存储空间中的一个具有预设大小的存储单元;空间管理模块,被配置为根据空间管理请求,将索引映射数据中的至少一个数据单元更新为第一值或第二值,第一值指示与数据单元对应的存储单元处于可分配状态,第二值指示与数据单元对应的存储单元处于已分配状态。
在一些实施例中,空间管理请求包括空间分配请求和空间回收请求,以及其中,空间管理模块包括:空间分配模块,被配置为:基于空间分配请求所请求分配的空间的大小,将索引映射数据中的至少一个数据单元由第一值更新为第二值,并向外部请求源分配与至少一个数据单元对应的至少一个存储单元;空间回收模块,被配置为:基于空间回收请求所请求回收的存储单元,在索引映射数据中,将与所请求回收的存储单元对应的数据单元由第二值更新为第一值。
在一些实施例中,向外部请求源分配与至少一个数据单元对应的存储单元包括:基于以下各项中的至少一项,确定与至少一个数据单元对应的至少一个存储单元的映射地址:至少一个数据单元在索引映射数据中的位置、索引映射数据中的数据单元所对应的存储单元的起始地址数据、索引映射数据中的数据单元所对应的存储单元的预设大小;经由请求源接口,向外部请求源反馈至少一个存储单元的映射地址。
在一些实施例中,确定与至少一个数据单元对应的至少一个存储单元的映射地址包括:基于至少一个数据单元在索引映射数据中的位置、索引映射数据中的数据单元所对应的存储单元的起始地址数据,确定至少一个存储单元的有效地址数据;基于有效地址数据和索引映射数据中的数据单元所对应的存储单元的预设大小,通过补位操作确定至少一个存储单元的映射地址。
在一些实施例中,通过补位操作确定至少一个存储单元的映射地址包括以下中的至少一项:在有效地址数据的尾部拼接预设个数的零位,预设个数与预设大小相对应;在有效地址数据的头部拼接预设标识符,预设标识符与预设大小相对应。
在一些实施例中,将与所请求回收的存储单元对应的数据单元由第二值变更为第一值包括:基于所请求回收的存储单元的映射地址,确定与所请求回收的存储单元对应的数据单元在索引映射数据中的位置;将位于所确定的位置处的数据单元由第二值变更为第一值。
在一些实施例中,基于所请求回收的存储单元的映射地址,确定与所请求回收的存储单元对应的数据单元在索引映射数据中的位置包括:基于所请求回收的存储单元的映射地址,通过截位操作确定所请求回收的存储单元的有效地址数据;基于有效地址数据和索引映射数据中的数据单元所对应的存储单元的起始地址数据,确定所请求回收的存储单元对应的数据单元在索引映射数据中的位置。
在一些实施例中,通过截位操作确定与所请求回收的存储单元对应的数据单元的有效地址数据包括以下中的至少一项:在映射地址的头部截去预设标识符,预设标识符与所请求回收的存储单元的预设大小相对应;在映射地址的尾部截去预设个数的零位,预设个数与所请求回收的存储单元的预设大小相对应。
在一些实施例中,空间分配模块包括索引读出电路,索引读出电路被配置为:对指向索引映射数据中的数据单元的指针执行移位操作,以及,当指针所指向的数据单元为第一值时,输出该数据单元在索引映射数据中的位置。
在一些实施例中,索引读出电路包括:索引读出计数电路,被配置为:响应于索引读出数量不等于待分配数量并且指针当前指向的数据单元为第一值,令索引读出数量加1,其中,待分配数量是基于空间分配请求所请求分配的空间的大小确定的;读出使能电路,被配置为:响应于索引读出数量不等于待分配数量并且指针当前指向的数据单元为第一值,令读出使能信号有效;索引读出电路,被配置为:响应于输出使能信号有效,输出指针当前指向的数据单元的位置。
在一些实施例中,空间回收模块包括索引写入电路,索引写入电路被配置为:向所有与空间回收模块所请求回收的存储单元相对应的索引映射数据中的数据单元写入第一值。
在一些实施例中,索引写入电路包括:索引写入计数电路,被配置为:响应于索引写入数量不等于待回收数量,令索引写入数量加1,其中,待回收数量为空间回收请求所请求回收的存储单元的数量;写入使能电路,被配置为:响应于索引写入数量不等于待回收数量并且待写入索引为有效数据,令写入使能信号有效,其中,待写入索引为与空间回收模块所请求回收的存储单元相对应的一个或多个存储单元索引;索引写入电路,被配置为:响应于写入使能信号有效,向与一个待写入索引对应的数据单元写入第一值。
在一些实施例中,上述装置还包括:寄存器配置模块,被配置为:在装置上电后,将索引映射数据中的所有数据单元置位为第一值。
在一些实施例中,寄存器配置模块还被配置为:向索引映射模块和空间管理模块中的至少一个发送至少一个指针的起始位置和终止位置,至少一个指针中的每个指针指向索引映射数据中的部分或全部数据单元。
在一些实施例中,索引映射数据包括至少两个子索引映射数据,每个子索引映射数据包括至少一个数据单元,并且,每个子索引映射数据中的各数据单元所对应的存储单元具有预设大小集合中的一种预设大小。
在一些实施例中,上述装置还包括请求分类模块,请求分类模块被配置为:将空间管理请求拆分为至少一个子管理请求,每个子管理请求用于管理至少两个子索引映射数据中的一个子索引映射数据中的数据单元。
根据本公开的另一方面,提供了一种计算设备,包括根据前述方面描述的用于管理存储空间的装置。
根据本公开的又一方面,提供了一种用于管理存储空间的方法,包括:接收来自外部请求源的空间管理请求;根据空间管理请求,将索引映射数据中的至少一个数据单元更新为第一值或第二值,第一值指示与数据单元对应的存储单元处于可分配状态,第二值指示与数据单元对应的存储单元处于已分配状态,其中,索引映射数据包括多个数据单元,每个数据单元对应于存储空间中的一个具有预设大小的存储单元。
根据本公开的又一方面,提供了一种芯片,包括根据前述方面的各种实施例所描述的用于管理存储空间的装置。
由本公开提供的用于管理存储空间的装置可以借助索引映射数据记录存储空间中的存储单元的分配情况,其中,索引映射数据中的每个数据单元对应于一个存储单元,数据单元为第一值表示相应存储单元未被分配,而数据单元为第二值表示相应存储单元已被分配。由此,可以高效地经由硬件装置基于诸如CPU、MCU等的请求源的请求来管理存储器中存储空间的分配与回收,可以减少软件方式所带来的路径长、延时高等问题,从而有助于提升存储空间的管理效率,进而有助于提升整个计算系统的运行速度。同时,借助单独的硬件装置实施内存管理可以释放处理器、控制器或微控制器的资源,有助于实现其资源的优化配置,从而有助于提升计算系统的整体性能。此外,本公开提供的用于管理存储空间的装置可以以相对较小的本地存储空间来记录存储单元的分配状态,一方面,可以减少占用存储器的存储空间来存放存储单元索引,并减少频繁占用存储器的读写带宽来完成存储单元索引的管理,另一方面,可以尽可能减少过多消耗本地存储空间,有助于在满足本地存储需求的前提下保持较小的装置体积及成本。
根据在下文中所描述的实施例,本公开的这些和其它方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
在下面结合附图对于示例性实施例的描述中,本公开的更多细节、特征和优点被公开,在附图中:
图1示例性示出了相关技术中的内存管理架构的示意图;
图2A、2B及2C示意性示出了根据本公开的一些实施例的存储空间管理系统的示例框图;
图3A和图3B示意性示出了根据本公开的一些实施例的存储空间的划分方案;
图4示意性示出了根据本公开的一些实施例的索引映射数据的示例;
图5示意性示出了根据本公开的一些实施例的借助指针管理索引映射数据的示例方案;
图6示意性示出了根据本公开的一些实施例的索引读出电路的示例电路图;
图7示意性示出了根据本公开的一些实施例的索引写入电路的示例电路图;
图8示意性示出了根据本公开的一些实施例的请求分类模块的示例框图;
图9示意性示出了根据本公开的一些实施例的计算设备的示例框图;
图10示意性示出了根据本公开的一些实施例的用于管理存储空间的方法的示例流程图。
具体实施方式
下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述。应理解,所描述的实施例仅仅是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示例性示出了相关技术中的内存管理架构100的示意图。如图1所示,在相关技术中,内存110可以直接由处理器120或类似结构经由总线130管理。示例性地,当处理器120需要向内存空间写入数据时,可以根据内部存储的内存空间管理策略确定可使用的空间,进而发出向相应内存空间写入数据的指令,该指令可以由硬件处理,并经由总线130发送至内存110,以实现数据写入。数据读取、删除等过程可以类似地实施。然而,申请人发现,通过这类方式执行内存管理存在以下缺点:第一,需占用处理器(或控制器、微控制器等)的资源来执行空间分配、回收等操作,不利于其资源的高效利用;第二,通过软件实施内存空间的分配和回收,需要硬件对指令进行处理,进而通过总线来在内存空间中进行读写操作,存在路径长、延时高、结构复杂等特点;第三,通过软件方式管理内存难以实现空间回收与空间分配的并行操作,限制了操作效率的提升;等等。
基于以上考虑,申请人提出了一种新的通过硬件电路实现内存管理的方案,其有助于解决或缓解上述各种问题。本公开实施例,无需占用部分内存空间来用于存储单元索引的存储,也无需通过对内存空间进行读写操作来实现对其中的存储单元索引的管理,能够节省读写时间,减少对内存读写带宽的占用;并且,无需耗费大量本地存储资源来用于存储单元索引的存储,降低本地存储资源的开销,利于对装置的时序优化及实现体积小型化。
图2A示意性示出了根据本公开的一些实施例的存储空间管理系统200A的示例框图。该存储空间管理系统200A包括用于管理存储空间的装置210,其可以接收来自外部请求源220的空间管理请求,并对所接收的空间管理请求进行处理,以管理存储器(未示出)中的存储空间。示例性地,上述存储器可以是各种用作内存的存储器,例如双倍速率(DoubleData Rate,DDR)同步动态随机存储器等,或者也可以是其他类型的存储器。示例性地,外部请求源220可以是任何可以发起空间管理请求的设备,例如CPU、MCU等。此外,虽然在本公开的附图中仅示出了一个外部请求源,但是,可以根据具体应用需求,使用本公开的实施例所提供的装置210来接收并处理来自多个外部请求源的空间管理请求。
如图2A所示,用于管理存储空间的装置210可以包括请求源接口211、索引存储器212和空间管理模块213。请求源接口211可以与外部请求源220相连接,例如通过专用线路或公用线路(比如总线)相连接,并用于实现外部请求源220与装置210之间的通信,例如通过握手方式实现数据通信。请求源接口211可以被配置为接收来自外部请求源220的空间管理请求,并可以被配置为将来自空间管理模块213的管理结果反馈至外部请求源220。空间管理请求可以为空间分配请求或空间回收请求,管理结果可以为例如指示所分配空间的存储单元索引、空间分配失败、空间回收成功等的信息。在本公开中,空间分配请求可以指用于请求分配存储器中的一定大小的空间以供使用的请求,空间回收请求(或称为空间释放请求)可以指用于请求回收(或请求释放)存储器中的使用完毕的空间的请求。
索引映射模块212可以被配置为存储索引映射数据,索引映射数据可以包括多个数据单元,每个数据单元可以对应于存储空间中的一个具有预设大小的存储单元。示例性地,索引映射数据可以通过比特数组(例如BitMap(位图)等)或其他类型的数据结构来实现。比如,索引映射数据可以为包括多个比特的数组,其中,每个比特可以对应于存储空间中的一个具有预设大小的存储单元,该比特的取值可以表示相应存储单元的分配状态,例如已分配和未分配。可选地,根据具体应用需求,也可以由两个或更多个比特对应于一个存储单元,在这样的情况下,可以记录存储单元的更多种状态类型。
示例性地,图3A示出了存储空间300的示意图。如图3A所示,存储空间300可以包括存储区域310。存储区域310可以被划分为多个具有预设大小的存储单元,上述索引映射数据中的各数据单元可以对应于这些具有预设大小的存储单元,由此,装置210可以通过管理索引映射数据中的数据单元来管理这些具备预设大小的存储单元的状态。上述预设大小可以根据具体需求设置,例如被设置为4 KB,或者被设置为2 KB、8 KB、16 KB、32 KB等。示例性地,当请求源220请求分配部分空间时,装置210可以基于索引映射数据中的一个或多个数据单元向其反馈一个或多个存储单元的索引或地址,随后请求源220可以根据这些存储单元的索引或地址寻址到存储空间300中的相应存储单元;当请求源220请求回收某些空间时,装置210可以根据相应的存储单元的索引或地址,通过调整索引映射数据中相应数据单元的取值来回收这些存储单元,使其恢复可被分配的状态。可选地,存储空间300还可以包括留作他用的其他存储区域320。
在一些实施例中,存储区域310可以被划分为多个存储单元,其中,每个存储单元具有预设大小集合中的一种预设大小。预设大小集合可以根据具体需求设置,例如可以被设置为包括8 MB、2 MB、512 KB、256 KB、128 KB、64 KB、16 KB、4 KB中的一个或多个,或者也可以包括其他预设大小。示例性地,如图3B所示,存储区域310可以被划分为子区域311、312等,每个子区域可以被划分为不同预设大小的存储单元,并且,每个子区域可以具有不同的大小,且可以被划分为不同数量的存储单元。在这种示例中,索引映射数据中的各数据单元同样可以对应于各个存储单元。可选地,索引映射数据可以包括多条数据或者多个数据部分,其中各条数据或各部分数据的数据单元可以对应于一种预设大小的存储单元。
空间管理模块213可以被配置为:根据空间管理请求,将索引映射数据中的至少一个数据单元更新为第一值或第二值,第一值可以指示与数据单元对应的存储单元处于可分配状态,第二值可以指示与数据单元对应的存储单元处于已分配状态。示例性地,在每个数据单元包括1比特的示例中,可以以0表示与该数据单元对应的存储单元处于已分配状态,以1表示与该数据单元对应的存储单元处于可分配状态。
为便于理解,图4示意性示出了根据本公开的一些实施例的索引映射数据400的示例。如图4所示,索引映射数据400为包括多个比特的数组,其中,每个比特为一个数据单元,并对应于存储空间中的一个存储单元。如图所示,序号1指示的比特取值为1,表示与该比特对应的存储单元当前未被分配给请求源使用,处于可分配状态;序号4指示的比特取值为0,表示与该比特对应的存储单元当前已被分配给请求源使用,处于已分配状态。
在本公开中,空间管理可以包括空间分配和空间回收两个方面,空间分配可以借由存储单元的分配来实施,空间回收可以借由存储单元的回收来实施。进一步地,存储单元的分配可以通过将索引映射数据中的相应数据单位置为第二值,并向请求源反馈相应的存储单元的索引或地址来实现,而存储单元的回收可以通过将索引映射数据中的相应数据单位置为第一值,以使其恢复可分配状态来实现。
示例性地,存储空间管理装置210可以被实现为各种类型的硬件电路,例如形成为集成电路、封装为芯片结构等,从而可以根据需求而被使用,例如被焊接到电路板的相应引脚处或插入到电路板的相应插口中等。
通过装置210,可以通过硬件方式对存储器(例如,诸如DDR的内存储器)的存储空间进行管理,可以减少软件管理方式的弊端,并可以提供一种更便捷的管理方式,有利于提升空间管理效率,节省CPU或MCU等主控制单元的处理资源,进而提升整个计算系统的操作效率,优化整个计算系统的资源配置。同时,通过存储空间管理装置210,允许借助索引映射数据管理存储空间中的存储单元。相较于在存储器中存放存储单元索引的方案,本方案可以减少占用存储器的存储空间,并且减少为管理存储单元索引而频繁占用存储器的读写带宽,从而有助于缩短存储单元索引的读写路径,提升空间管理效率。相较于在本地存放存储单元索引的方案,本方案可以降低对本地存储空间的消耗,有助于减少对本地存储资源的需求,从而有助于保持较小的装置体积及较低的成本。由此,通过装置210,可以在提升管理效率的同时保持对本地存储资源的低消耗,从而有助于提升整体系统性能。
为进一步便于理解,以参考图3A描述的示例为例,假设存储区域310的大小为8 GB时,若以4 KB粒度将其划分为多个存储单元,则共可划分为2097152个存储单元,从而共需2097152个存储单元索引。若每个存储单元以一个4字节大小的存储单元索引来表征,则在上述示例中,共需占用8 MB的存储空间以存储存储单元索引。进一步地,以参考图3B描述的示例为例,依旧假设存储区域310的总空间大小为8 GB,若以8 MB粒度划分4 Gb存储空间、以2 MB粒度划分2 GB存储空间、以512 KB粒度划分1 GB存储空间、以256 KB粒度划分512MB存储空间、以64 KB粒度划分256 MB存储空间、以16 KB粒度划分256 MB存储空间,则共可划分为512个8 MB存储单元、1024个2 MB存储单元、2048个512 KB存储单元、2048个256 KB存储单元、4096个64 KB存储单元、16384个16 KB存储单元。若每个存储单元以一个4字节大小的存储单元索引来表征,则8 MB存储单元对应的存储单元索引需2 KB进行存储、2 MB存储单元对应的存储单元索引需4 KB进行存储、512 KB存储单元对应的存储单元索引需8 KB进行存储、256 KB存储单元对应的存储单元索引需8 KB进行存储、64 KB存储单元对应的存储单元索引需16 KB进行存储、16 KB存储单元对应的存储单元索引需64 KB进行存储。由此,在上述示例中,共需占用102 KB的存储空间以存储存储单元索引。而使用本公开所提供的方案,每个存储单元仅可以仅以1个数据单元来表征,该1个数据单元的大小最小可以为1比特,如此,8 MB存储单元对应的数据单元共计0.0625 KB、2 MB存储单元对应的数据单元共计0.125 KB、512 KB存储单元对应的存储单元索引需0.25 KB、256 KB存储单元对应的数据单元共计0.25 KB、64 KB存储单元对应的数据单元共计0.5 KB、16 KB存储单元对应的数据单元共计2 KB。由此,在上述示例中,可以仅占用3.1875 KB的存储空间以存储索引映射数据。相较而言,通过将存储空间划分为多种预设大小的存储单元有助于节省存储空间,然而,其优化效果是有限的,本公开中通过索引映射数据管理存储单元的方案明显可以节省更多存储空间。
图2B示意性示出了根据本公开的一些实施例的存储空间管理系统200B的示例框图。
在一些实施例中,如前文所提及的,空间管理请求可以包括空间分配请求和空间回收请求。为了可以并行处理空间分配请求和空间回收请求,以提升处理效率,可以设置分离的空间分配模块和空间回收模块。示例性地,如图2B所示,空间管理模块213可以包括空间分配模块2131和空间回收模块2132。
空间分配模块2131可以被配置为:基于空间分配请求所请求分配的空间的大小,将索引映射数据中的至少一个数据单元由第一值更新为第二值,并向外部请求源分配与至少一个数据单元对应的至少一个存储单元。具体地,可以根据空间分配请求所请求分配的空间的大小和存储单元的预设大小,来确定所需存储单元的数量,进而在索引映射数据中找到相应数量个为第一值的数据单元,将其更新为第二值,并将这些数据单元对应的索引值或地址反馈至外部请求源220,以完成存储单元的分配。示例性地,假设空间分配请求所请求分配的空间为16 KB,若存储空间中的每个存储单元的大小为4 KB,则需在索引映射数据中找到4个为第一值的数据单元,将其更新为第二值,并向外部请求源反馈相应的索引值或地址。
在一些实施例中,可以通过向外部请求源反馈存储单元的映射地址,来向其分配存储单元。该映射地址可以是存储单元的实际地址,或者可以是可映射至该实际地址的地址数据。通过向外部请求源反馈映射地址,可以便于外部请求源快速定位相应存储单元,而无需执行较繁琐的映射操作来获取地址数据,从而有助于简化请求源侧的操作,提升其处理效率,并使得装置210的操作对其保持相对透明的状态,便于系统的扩展,也便于装置210的修改和更新。
具体地,在这类实施例中,当根据空间分配请求在索引映射数据中确定至少一个数据单元后,可以基于以下各项中的至少一项,确定与该至少一个数据单元对应的至少一个存储单元的映射地址:至少一个数据单元在索引映射数据中的位置、索引映射数据中的数据单元所对应的存储单元的起始地址数据、索引映射数据中的数据单元所对应的存储单元的预设大小。
示例性地,可以通过以下步骤确定与至少一个数据单元对应的至少一个存储单元的映射地址:基于至少一个数据单元在索引映射数据中的位置、索引映射数据中的数据单元所对应的存储单元的起始地址数据,确定至少一个存储单元的有效地址数据;基于有效地址数据和索引映射数据中的数据单元所对应的存储单元的预设大小,通过补位操作确定至少一个存储单元的映射地址。例如,针对一个数据单元,可以通过将索引映射数据中的该数据单元所对应的存储单元的起始地址数据与该数据单元在索引映射数据中的位置相加,来得到其有效地址数据。可选地,该数据单元所对应的存储单元的起始地址数据可以为其实际起始地址,或者也可以是其实际起始地址的一部分,例如省略了末位的部分零位。为便于理解,参考图4所示的示例,假设该索引映射数据400中的每个数据单元对应于16 KB的存储单元,且这些16 KB的存储单元的起始地址数据为0x0005,即索引映射数据400中第0位数据单元对应的存储单元的有效地址数据为0x0005,则如4所示的序号1所指示的数据单元对应的存储单元的有效地址数据为0x0006,序号4所指示的数据单元对应的存储单元的有效地址数据为0x0009。进而,可以通过对所得到的有效地址数据执行补位操作,来快速得到可反馈至外部请求源的各个映射地址。应理解,上述起始地址数据和预设大小等仅仅是示例性地,,其可以根据具体应用需求来设定。
示例性地,上述补位操作可以包括以下中的至少一项:在有效地址数据的尾部拼接预设个数的零位,预设个数与预设大小相对应;在有效地址数据的头部拼接预设标识符,预设标识符与预设大小相对应。可以理解,由于不同预设大小的存储单元所占空间大小不同,故相邻两个存储单元的地址差也将随预设大小的不同而不同。因此,针对不同预设大小的存储单元,可以在有效地址数据的尾部拼接不同预设个数的零位。此外,在存在多种预设大小的存储单元的实施例中,为了清楚地标识存储单元的预设大小,可以在有效地址数据的头部拼接预设标识符。继续以前段参考图4所描述的示例为例,针对16 KB的预设大小,可以分别在序号1及序号4所指示的数据单元对应的存储单元的有效地址数据0x0006和0x0009尾部拼接14个零位,以还原其映射地址;若存在多个不同的预设大小,假设如参考图3B所描述的示例那样,存在8 MB、2 MB、512 KB、256 KB、64 KB和16 KB共计6种预设大小,则可以以3位的预设标识符来区分不同预设大小,例如以000表示16KB、以001表示64KB、以010表示 256KB、以011表示512KB、以100表示2MB、以101表示8MB,由此,可以在上述有效地址数据0x0006和0x0009的头部拼接000,以指示其对应于16 KB的存储单元。应理解,上述预设大小、补位涉及的零位的预设个数、预设标识符等均是示例性地,其可以根据具体应用需求来设定。
在确定上述至少一个存储单元的映射地址后,可以经由请求源接口,向外部请求源220反馈所确定的映射地址。随后外部请求源220可以根据所反馈的映射地址在存储空间中寻址相应的存储单元,可选地,其在寻址前可以对该映射地址进行简单处理,例如根据预设机制基于映射地址的头部若干位数据获取存储单元的预设大小,以及基于其余数据获取存储单元的实际地址,等等。
空间回收模块2132可以被配置为:基于空间回收请求所请求回收的存储单元,在索引映射数据中,将与所请求回收的存储单元对应的数据单元由第二值更新为第一值。具体地,可以根据空间回收请求所请求回收的存储单元的索引值或地址,来确定相应数据单元的位置,进而在索引映射数据中找到相应数据单元,并将其更新为第一值。可选地,更新完毕后,可以向外部请求源220反馈消息以告知存储单元回收完毕。
在一些实施例中,空间回收请求可以包括所请求回收的存储单元的映射地址,即在进行分配时由装置210反馈至外部请求源的映射地址数据。由此,可以基于所请求回收的存储单元的映射地址,确定与所请求回收的存储单元对应的数据单元在索引映射数据中的位置,然后将位于所确定的位置处的数据单元由第二值变更为第一值。如此,通过与空间分配过程相逆的操作,可以实现存储单元的回收管理。
示例性地,在这类实施例中,在从空间回收请求获取到所请求回收的存储单元的映射地址后,可以基于所请求回收的存储单元的映射地址,通过截位操作确定所请求回收的存储单元的有效地址数据。然后,基于所确定的有效地址数据和索引映射数据中的数据单元所对应的存储单元的起始地址数据,可以确定所请求回收的存储单元对应的数据单元在索引映射数据中的位置。
示例性地,上述截位操作可以包括以下中的至少一项:在映射地址的头部截去预设标识符,预设标识符与所请求回收的存储单元的预设大小相对应;在映射地址的尾部截去预设个数的零位,预设个数与所请求回收的存储单元的预设大小相对应。关于预设标识符和预设个数,在前文已予以介绍。为便于理解,继续以前段参考图4所描述的示例为例,假设所回收的存储单元为前文所述及的16 KB的存储单元,则可以例如在映射地址尾部截去14个零位,以还原其有效地址;若存在多个不同的预设大小,假设如参考图3B所描述的示例那样,存在8 MB、2 MB、512 KB、256 KB、64 KB和16 KB共计6种预设大小,若以3位的预设标识符来区分不同预设大小,例如以000表示16KB、以001表示64KB、以010表示 256KB、以011表示512KB、以100表示2MB、以101表示8MB,则可以在映射地址头部截去3位预设标识符,并可以通过该标识符获知该存储单元为16 KB的存储单元。
示例性地,可以通过将所确定的有效地址数据和索引映射数据中的数据单元所对应的存储单元的起始地址数据相减,来得到数据单元在索引映射数据中的位置。关于数据单元所对应的存储单元的起始地址数据,前文已予以介绍。位便于理解,继续以前文参考图4描述的示例为例,假设所请求回收的一存储单元为16 KB的存储单元,且这些16 KB的存储单元的起始地址数据为0x0005,则可以将通过上述截位操作获得的该存储单元的有效地址减去该起始地址数据0x0005,来确定该数据单元在索引映射数据中的位置。
回到图2B,空间分配模块2131可以从索引映射模块212读取与一个或多个可分配的存储单元对应的数据单元在索引映射数据中的位置,进而可以根据前文所描述的过程来确定该一个或多个可分配的存储单元的映射地址。由此,在一些实施例中,空间分配模块2131可以包括索引读出电路,并借助其来获取与可分配的存储单元对应的数据单元在索引映射数据中的位置。具体地,索引读出电路可以被配置为:对指向索引映射数据中的数据单元的指针执行移位操作,以及,当指针所指向的数据单元为第一值时,输出该数据单元在索引映射数据中的位置。示例性地,上述指针可以在预设范围内循环移动,即,当其达到该预设范围的终止位置时,可以再次回到该预设范围的起始位置。由此,可以借助指针便捷地实现对预设范围内的数据单元的管理。
示例性地,图5示出了借助指针管理索引映射数据中的数据单元的示意管理机制500。如图所示,可以通过两个或更多个指针管理索引映射数据,每个指针可以被配置为管理索引映射数据中的一个数据区域。例如,如图5所示,可以以256比特为一个位域,每个位域配置1个指针,该指针可以在该位域内循环移动。可选地,可以存在一个或多个位域的比特数不足256,此时依然可以为其配置1个指针。如此,通过将索引映射数据划分为不同位域并采用不同指针进行管理,可以减小指针大小,并提升管理效率。
进一步示例性地,以前文参考图3B所描述的示例为例,若8 MB存储单元对应的数据单元共计512个、2 MB存储单元对应的数据单元共计1024个、512 KB存储单元对应的数据单元共计2048个、256 KB存储单元对应的数据单元共计2048个、64 KB存储单元对应的数据单元共计4096个、16 KB存储单元对应的数据单元共计16384个,且每个数据单元为1比特。若每256个比特为一个位域并配置1个指针,则8 MB数据单元需配置2个指针、2 MB数据单元需配置4个指针、512 KB数据单元需配置8个指针、256 KB数据单元需配置8个指针、64 KB数据单元需配置16个指针、16 KB数据单元需配置64个指针。
示意性地,图6示出了根据本公开的一些实施例的索引读出电路600的示例电路图。如图6所示,索引读出电路600可以包括索引读出计数电路610、读出使能电路620和索引读出电路630。更具体地,索引读出计数电路610可以被配置为:响应于索引读出数量不等于待分配数量并且指针当前指向的数据单元为第一值,令索引读出数量加1,其中,待分配数量是基于空间分配请求所请求分配的空间的大小确定的;读出使能电路620可以被配置为:响应于索引读出数量不等于待分配数量并且指针当前指向的数据单元为所述第一值,令读出使能信号有效;索引读出电路630可以被配置为:响应于输出使能信号有效,输出指针当前指向的数据单元的位置。通过电路600,可以实现读出取值为第一值的数据单元的位置,对所读出的数据单元的位置进行计数,并在计数达到待分配数量时停止读出的功能。
示例性地,如图6所示,索引读出计数电路610可以包括加法器、数据选择器(mux)、寄存器和两个比较器。具体地,加法器以“+”符号标识,其一个输入端可以接入左侧所示比较器(以“=”符号标识)的输出端,该比较器的两个输入端接入信号1和当前指针所指向的数据单元的数值,即图中所示的索引映射位(index_mapping_bit),加法器的另一个输入端可以连接寄存器的输出端。由此,上述比较器可以实现判断当前指针所指向的数据单元的数值是否等于1(示例性地,假设第一值为1),并在其等于1时输出1,该比较器与加法器相组合可以实现在当前指针所指向的数据单元的数值等于1时对寄存器中数据执行加1操作的功能。数据选择器以“mux”符号标识,并被示出为二选一数据选择器,其一个输入端连接至加法器的输出端,另一个输入端接入信号0,选择控制端可以连接右侧所示比较器的输出端,由此,在该比较器两输入端不等时,数据选择器可以输出加法器的输出值。寄存器被示出为以“D”符号标识的D型触发器,其输入端连接至数据选择器的输出端,由此,在比较器两输入端不等时,寄存器可以通过数据选择器接收到来自加法器的输出值,从而可以记录指针所指向的数据单元的数值等于1的累计次数,即记录所找到的可分配的存储单元的数量。右侧所示比较器的一个输入端接收基于空间分配请求确定的请求分配的存储单元的数量,即图中所示的请求分配索引数量(req_allocate_index_num),另一个输入端可以连接至寄存器的输出端,从而实现判断寄存器记录的数值是否等于所请求分配的存储单元的数量的功能,即实现判断已找到的可分配的存储单元的数量是否等于所请求分配的存储单元的数量的功能。示例性地,读出使能电路620可以包括。读出电路520可以包括比较器、反相器和与门。具体地,反相器的输入端可以连接索引读出计数电路610的输出,即图中所示的分配完成(allocate_done)信号,以实现对该信号的反向操作。与门的一个输入端可以连接反向器的输出端,另一个输入端可以连接比较器的输出端,该比较器的两个输入端接入信号1和当前指针所指向的数据单元的数值,即图中所示的索引映射位(index_mapping_bit)。由此,在当前指针所指向的数据单元的数值等于1并且已找到的可分配的存储单元的数量不等于所请求分配的存储单元的数量时,读出使能电路620可以输出有效的使能信号(即与门的输出),例如,图中使能信号等于1时可视为有效。示例性地,索引读出电路630可以包括二选一数据选择器,其两个输入端分别接入0信号和当前指针指向的数据单元的位置的数据(即图中的索引映射数据(index_mapping_data)),选择控制端接入读出使能电路620输出的使能信号,从而可以实现在使能信号有效时输出当前指针指向的数据单元的位置的功能,所输出的数据单元的位置可以作为输出数据(即图中所示输出数据(output_data))被提供给空间分配模块,空间分配模块可以基于这种位置数据确定相应存储单元的映射地址,以反馈至外部请求源。随着指针的移位,利用上述电路结构,可以逐步找到所需数量个与可供分配的存储单元对应的数据单元的位置数据,并进而得到其映射地址。
应理解,图6所示的电路图仅仅是示意性和示例性的,实际电路中可以存在其他电路结构,以及可能通过其他电路结构实现相同或相似的功能。
再次回到图2B,在接收到空间回收请求,并基于其获取到所请求回收的存储单元的映射地址后,空间回收模块2132可以根据前文所描述的过程来确定与所请求回收的存储单元对应的数据单元在索引映射数据中的位置,进而可以将所确定的位置处的数据单元更新为第一值。由此,在一些实施例中,空间回收模块2132可以包括索引写入电路,并借助其来对与所请求回收的存储单元对应的数据单元的位置处更新数据单元的取值。具体地,索引写入电路可以被配置为:向所有与空间回收模块所请求回收的存储单元相对应的索引映射数据中的数据单元写入第一值。
同样示意性地,图7示意性示出了根据本公开的一些实施例的索引写入电路700的示例电路图。如图7所示,索引写入电路700可以包括索引写入计数电路710、写入使能电路720和索引写入电路730。更具体地,索引写入计数电路710可以被配置为:响应于索引写入数量不等于待回收数量,令索引写入数量加1,其中,待回收数量为空间回收请求所请求回收的存储单元的数量;写入使能电路720可以被配置为:响应于索引写入数量不等于待回收数量并且待写入索引为有效数据,令写入使能信号有效,其中,待写入索引为与空间回收模块所请求回收的存储单元相对应的一个或多个存储单元索引;索引写入电路730可以被配置为:响应于写入使能信号有效,向与一个待写入索引对应的数据单元写入第一值。通过电路700,可以实现在与所请求回收的存储单元对应的数据单元中写入第一值,对写入第一值的数据单元进行计数,并在计数达到待回收数量时停止写入的功能。
示例性地,如图7所示,索引写入计数电路710可以包括加法器、数据选择器(mux)、寄存器和比较器。具体地,加法器的一个输入端可以接入信号1,另一个输入端可以连接寄存器的输出端,以实现对寄存器中数据执行加1操作。数据选择器的一个输入端连接至加法器的输出端,另一个输入端接入信号0,选择控制端可以连接比较器的输出端,由此,在比较器两输入端不等时,数据选择器可以输出加法器的输出值。寄存器的输入端连接至数据选择器的输出端,由此,在比较器两输入端不等时,寄存器可以通过数据选择器接收到来自加法器的输出值,从而实现记录累加值的作用。比较器的一个输入端接收所请求回收的存储单元的数量,即图中所示的请求回收索引数量(req_deallocate_index_num),示例性地,该数量可以由空间回收模块2132基于空间回收请求来得到,另一个输入端可以连接至寄存器的输出端,从而实现判断寄存器记录的数值是否等于所请求回收的存储单元的数量的功能,即实现判断累加值是否等于所请求回收的存储单元的数量的功能。示例性地,写入使能电路720可以包括反相器和与门。具体地,反相器的输入端可以连接索引写入计数电路710的输出,即图中所示的回收完成(deallocate_done)信号,以实现对该信号的反向操作。与门的一个输入端可以连接反向器的输出端,另一个输入端可以接入数据有效(data_valid)信号,该信号可以用于指示待写入索引为有效数据,并可以来自于外部请求源。由此,可以实现在累加值不等于所请求回收的存储单元的数量、且待写入索引为有效数据时令写入使能信号有效的功能。示例性地,索引写入电路730包括比较器和数据选择器。具体地,比较器的两个输入端可以分别接入与待写入索引对应的位置数据(即图中所示的回收索引(deallocate_index))和索引映射数据中的数据单元的位置数据(即图中所示的位图位置(bit_map_location)),由此,可以在两者相等时输出写入信号,即图中所示写入索引(wr_index)信号。数据选择器的两个输入端可以分别接入0信号和来自比较器的写入信号,选择控制端可以接入来自写入使能电路720的写入使能信号,由此,可以在写入使能信号有效时输出写入信号,即图中所示写入索引(wr_index)信号,以在于所请求回收的存储单元对应的数据单元的位置处写入第一值,例如写入1。由此,可以借助电路700依次处理各个所请求回收的存储单元,并在所有请求回收的存储单元处理完毕后停止操作。示例性地,在存在多种预设大小的存储单元的情况下,可以根据存储单元的映射地址中的预设标识符确定其对应的预设大小,并直接在该预设大小的索引映射数据或数据段中寻找与存储单元对应的数据单元的位置。
应理解,图7所示的电路图仅仅是示意性和示例性的,实际电路中可以存在其他电路结构,以及可能通过其他电路结构实现相同或相似的功能。
再次回到图2B,如图所示,可选地,装置210还可以包括寄存器配置模块214,其可以被配置为:在装置210上电后,将索引映射模块212中的索引映射数据中的所有数据单元置位为第一值。换言之,在装置210上电后,可以将所有存储单元初始化为可分配状态,以便后续管理操作。
在一些实施例中,寄存器配置模块214还可以被配置为:向索引映射模块212和空间分配模块213中的至少一个发送至少一个指针的起始位置和终止位置,至少一个指针中的每个指针指向索引映射数据中的部分或全部数据单元。如前文所提及的,可以通过多个指针分区管理索引映射数据,例如针对对应于不同预设大小的区域使用不同指针、在对应于同一预设大小的区域内使用多个指针分区管理等。通过寄存器配置模块,可以允许灵活地设定各个指针的起始位置和终止位置,从而允许用户根据具体需求来对各指针进行调整。
如图2B所示,在一些实施例中,可选地,装置210还可以包括请求分类模块215。图8示意性示出了根据本公开的一些实施例的请求分类模块215的示例框图。
如图8所示,请求分类模块215可以被配置为:接收空间管理请求,当空间管理请求为空间分配请求时,将其存储至第一队列2151,以及,当空间管理请求为空间回收请求时,将其存储至第二队列2152。由此,可以对来自外部请求源的空间管理请求进行分类存储,使得空间分配请求和空间回收请求可以同时被传递至后级模块,例如传递至空间分配模块和空间回收模块,从而便利于对空间分配请求和空间回收请求进行并行处理。此外,第一队列和第二队列可以对所接收的空间分配请求和空间回收请求进行存储,如此,当外部请求源发起多次请求时,可以减少对外部请求源的反压,提高系统效率。可选地,第一队列2151和第二队列2152可以采取诸如FIFO的存储结构。由于FIFO存储空间的有限性,可以为第一队列2151和第二队列2152设置预满门限。当第一队列2151中所存储的空间分配请求的数量达到相应预满门限(或被称为第一阈值)时,第一队列2151可以进行预满反压,可以不再接收来自外部请求源的空间分配请求;当第二队列2152中所存储的空间回收请求的数量达到相应预满门限(或被称为第二阈值)时,第二队列2152可以进行预满反压,可以不再接收来自外部请求源的空间回收请求。通过反压机制,可以防止请求分类模块214接收到超出其存储能力的空间分配请求和/或空间回收请求,从而减少出现处理错误的概率。
如前文所提及的,在一些实施例中,存储器的存储空间可以被划分为具有不同预设大小的存储单元。在这种实施例中,对应于各预设大小的存储单元的数据单元可以被分别管理。示例性地,索引映射模块212中的索引映射数据可以包括至少两个子索引映射数据,每个子索引映射数据可以包括至少一个数据单元,并且,每个子索引映射数据中的各数据单元所对应的存储单元可以具有预设大小集合中的一种预设大小。示例性地,如前文示例所描述的,预设大小集合可以包括8 MB、2 MB、512 KB、256 KB、64 KB、16 KB六种预设大小,相应地,在这种示例中,索引映射数据可以包括六个子索引映射数据,各自索引映射数据中的数据单元分别对应于8 MB、2 MB、512 KB、256 KB、64 KB、16 KB的存储单元。通过以不同子索引映射数据管理不同预设大小的存储单元,可以支持多粒度划分存储空间的场景,并可以在这种场景下有序管理各种预设大小的存储单元。
进一步示例性地,在这种实施例中,空间分类模块215还可以被配置为:将空间管理请求拆分为至少一个子管理请求,每个子管理请求用于管理至少两个子索引映射数据中的一个子索引映射数据中的数据单元。拆分后的一个或多个子管理请求可以被传递至空间管理模块213。示例性地,空间分类模块215可以接收空间分配请求,并基于预设大小集合中的预设大小对该空间分配请求所请求分配的空间进行拆分,使得该所请求分配的空间可以被拆分为一个或多个具有相同或不同预设大小的存储单元,从而将该空间分配请求拆分为一个或多个子分配请求,每个子分配请求可以用于请求分配一种预设大小的存储单元的索引或地址。示例性地,以前文描述的以8 MB、2 MB、512 KB、256 KB、64 KB、16 KB粒度划分存储空间的示例为例,可以判断空间分配请求所请求分配的空间是否满足A*8MB +B*2MB +C*512KB+ D*256KB +E*64KB+F*16KB的规则,其中A、B、C、D、E、F均为大于或等于零的整数。若满足,则可以认为该空间分配请求可完全拆分,若不满足,则可以认为该空间分配请求不可完全拆分。在不可完全拆分的情况下,可以上报指示出错的信息。在可完全拆分的情况下,A、B、C、D、E、F即代表了每种预设大小的存储单元的所需数量。可选地,在对空间分配请求进行拆分时,为了进一步降低所需获取的存储单元的索引或地址的数量,并提升效率,可以尽可能使拆分后的存储单元的数量被最小化。例如,在上述示例中,可以令A+B+C+D+E+F的值被最小化。此外,示例性地,在上述六种预设大小的实施例中,在处理每一个空间分配请求/空间回收请求,可以在接收到六个来自子分配模块/子回收模块的指示处理完成的信号后,认为该空间分配请求/空间回收请求处理完毕。
此外,在这种实施例中,为了更便捷地分别管理对应于各预设大小的子索引映射数据,空间管理模块可以包括至少两个子管理模块,每个子管理模块与预设大小集合中的一种预设大小相对应,并被配置为根据空间管理请求管理子索引映射数据中的数据单元。各子管理模块的操作及其与相应子索引映射模块的交互操作可以类似于前文所描述的空间管理模块的操作及其与索引映射模块之间的交互操作,在此不再赘述。
为便于理解,图2C示意性示出了根据本公开的上述实施例的存储空间管理系统200C的示例框图。
如图2C所示,索引映射模块212可以包括子索引映射模块212-1至212-N,其中N为大于或等于2的整数,子索引映射模块212-1至212-N中的每一个可以包括相应的子索引映射数据。各子空间管理模块在此被进一步示出为子分配模块2131-1至2131-N和子回收模块2132-1至2132-N,其分别与相应的子索引映射模块交互,来实现存储单元的分配和回收。此外,相应地,寄存器配置模块214可以包括子寄存器配置模块214-1至214-N,其分别用于初始化相应的子索引映射数据及指向子索引映射数据的指针。
在本公开的一些实施例中,还提供了一种计算设备,其可以包括前文所描述的用于管理存储空间的装置,例如装置210等。示意性地,图9示出了计算设备900的示例框图。如图所示,计算设备900可以包括用于管理存储空间的装置910,其可以如前文各种实施例描述的那样执行存储空间管理功能。计算设备900还可以包括处理器或控制器920,其可以被实施为CPU、MCU或类似结构,并可以用于执行各种处理或控制操作。计算设备900还可以包括存储器930,其可以用于存储数据,例如处理器或控制器920在执行应用程序时所需的各种程序数据或者应用程序执行过程中使用或产生的数据等。存储器930例如被实现为单个存储器,或者也可以被实现为两个或更多个存储器的组合。例如,存储器930可以包括一个或多个内存储器,比如用作内存的DDR存储器或者SDRAM存储器等。用于管理存储空间的装置910、处理器/控制器920以及存储器930可以通过通信线路940连接在一起,并实现彼此之间的数据传递。示例性地,通信线路940可以为总线(诸如AXI总线等)或其他类型的通信线路,或者可以为它们的组合。
在本公开的一些实施例中,还提供了一种用于管理存储空间的方法。示例性地,图10示出了用于管理存储空间的方法1000的示例流程图。
如图10所示,在步骤1010,可以接收来自外部请求源的空间管理请求;在步骤1020,可以根据空间管理请求,将索引映射数据中的至少一个数据单元更新为第一值或第二值,第一值指示与数据单元对应的存储单元处于可分配状态,第二值指示与数据单元对应的存储单元处于已分配状态,其中,索引映射数据包括多个数据单元,每个数据单元对应于存储空间中的一个具有预设大小的存储单元。
方法1000可以具有与前述用于管理存储空间的装置相同或相似的实施例,并可以具有与之相同或相似的技术效果。为简洁起见,在此不再赘述。
在本公开的一些实施例中,还提供了一种芯片,其可以包括前文各种实施例所描述的用于管理存储空间的装置。示例性地,该芯片可以通过总线或其他方式连接至诸如CPU、GPU、MCU等的请求源,并可以基于前文描述的各种实施例来根据请求源的空间管理请求管理片上存储的用以表征存储器中存储空间的存储单元的分配状态的索引映射数据,进而实现对存储器中的存储空间的管理。可选地,该芯片还可以通过总线或其他方式连接到诸如DDR等的存储器。以及可选地,除了上述用于管理存储空间的装置外,该芯片还可以包括实现其他功能的电路模块或装置。
在本公开的描述中,术语“上”、“下”、“左”、“右”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本公开而不是要求本公开必须以特定的方位构造和操作,因此不能理解为对本公开的限制。
在本说明书的描述中,参考术语“一个实施例”、“另一个实施例”等的描述意指结合该实施例描述的具体特征、结构、材料或者特点包含于本公开的至少一个实施例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。另外,需要说明的是,本说明书中,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者多个该特征。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
在本公开中,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”、“固定”等术语应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或成一体;可以是机械连接,也可以是电连接,还可以是通信;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本公开中的具体含义。
以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此。任何熟悉本技术领域的技术人员在本公开揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。

Claims (19)

1.一种用于管理存储空间的装置,其特征在于,所述装置包括:
请求源接口,连接外部请求源,并被配置为接收来自所述外部请求源的空间管理请求,所述空间管理请求包括空间分配请求;
索引映射模块,被配置为存储索引映射数据,所述索引映射数据包括多个数据单元,每个数据单元对应于所述存储空间中的一个具有预设大小的存储单元;
空间管理模块,被配置为根据所述空间管理请求,将所述索引映射数据中的至少一个数据单元更新为第一值或第二值,所述第一值指示与数据单元对应的存储单元处于可分配状态,所述第二值指示与数据单元对应的存储单元处于已分配状态,
其中,所述空间管理模块包括空间分配模块,所述空间分配模块被配置为:基于所述空间分配请求所请求分配的空间的大小,将所述索引映射数据中的至少一个数据单元由所述第一值更新为所述第二值,并基于所述至少一个数据单元在所述索引映射数据中的位置,向所述外部请求源分配与所述至少一个数据单元对应的至少一个存储单元。
2.根据权利要求1所述的装置,其特征在于,所述空间管理请求还包括空间回收请求,以及其中,所述空间管理模块还包括:
空间回收模块,被配置为:基于所述空间回收请求所请求回收的存储单元,在所述索引映射数据中,将与所述所请求回收的存储单元对应的数据单元由所述第二值更新为所述第一值。
3.根据权利要求1所述的装置,其特征在于,所述基于所述至少一个数据单元在所述索引映射数据中的位置,向所述外部请求源分配与所述至少一个数据单元对应的存储单元包括:基于所述至少一个数据单元在所述索引映射数据中的位置以及以下各项中的至少一项,确定与所述至少一个数据单元对应的至少一个存储单元的映射地址:所述索引映射数据中的数据单元所对应的存储单元的起始地址数据、所述索引映射数据中的数据单元所对应的存储单元的预设大小;
经由所述请求源接口,向所述外部请求源反馈所述至少一个存储单元的映射地址。
4.根据权利要求3所述的装置,其特征在于,所述确定与所述至少一个数据单元对应的至少一个存储单元的映射地址包括:
基于所述至少一个数据单元在所述索引映射数据中的位置、所述索引映射数据中的数据单元所对应的存储单元的起始地址数据,确定所述至少一个存储单元的有效地址数据;
基于所述有效地址数据和所述索引映射数据中的数据单元所对应的存储单元的预设大小,通过补位操作确定所述至少一个存储单元的映射地址。
5.根据权利要求4所述的装置,其特征在于,所述通过补位操作确定所述至少一个存储单元的映射地址包括以下中的至少一项:
在所述有效地址数据的尾部拼接预设个数的零位,所述预设个数与所述预设大小相对应;
在所述有效地址数据的头部拼接预设标识符,所述预设标识符与所述预设大小相对应。
6.根据权利要求2所述的装置,其特征在于,所述将与所述所请求回收的存储单元对应的数据单元由所述第二值变更为所述第一值包括:
基于所述所请求回收的存储单元的映射地址,确定与所述所请求回收的存储单元对应的数据单元在所述索引映射数据中的位置;
将位于所确定的位置处的数据单元由所述第二值变更为所述第一值。
7.根据权利要求6所述的装置,其特征在于,所述基于所述所请求回收的存储单元的映射地址,确定与所述所请求回收的存储单元对应的数据单元在所述索引映射数据中的位置包括:
基于所述所请求回收的存储单元的映射地址,通过截位操作确定所请求回收的存储单元的有效地址数据;
基于所述有效地址数据和所述索引映射数据中的数据单元所对应的存储单元的起始地址数据,确定所述所请求回收的存储单元对应的数据单元在所述索引映射数据中的位置。
8.根据权利要求7所述的装置,其特征在于,所述通过截位操作确定与所请求回收的存储单元对应的数据单元的有效地址数据包括以下中的至少一项:
在所述映射地址的头部截去预设标识符,所述预设标识符与所述所请求回收的存储单元的预设大小相对应;
在所述映射地址的尾部截去预设个数的零位,所述预设个数与所述所请求回收的存储单元的预设大小相对应。
9.根据权利要求1所述的装置,其特征在于,所述空间分配模块包括索引读出电路,所述索引读出电路被配置为:对指向所述索引映射数据中的数据单元的指针执行移位操作,以及,当所述指针所指向的数据单元为所述第一值时,输出该数据单元在所述索引映射数据中的位置。
10.根据权利要求9所述的装置,其特征在于,所述索引读出电路包括:
索引读出计数电路,被配置为:响应于索引读出数量不等于待分配数量并且所述指针当前指向的数据单元为所述第一值,令所述索引读出数量加1,其中,所述待分配数量是基于所述空间分配请求所请求分配的空间的大小确定的;
读出使能电路,被配置为:响应于所述索引读出数量不等于所述待分配数量并且所述指针当前指向的数据单元为所述第一值,令读出使能信号有效;
索引读出电路,被配置为:响应于所述输出使能信号有效,输出所述指针当前指向的数据单元的位置。
11.根据权利要求2所述的装置,其特征在于,所述空间回收模块包括索引写入电路,所述索引写入电路被配置为:向所有与所述空间回收模块所请求回收的存储单元相对应的索引映射数据中的数据单元写入所述第一值。
12.根据权利要求11所述的装置,其特征在于,所述索引写入电路包括:
索引写入计数电路,被配置为:响应于索引写入数量不等于待回收数量,令所述索引写入数量加1,其中,所述待回收数量为所述空间回收请求所请求回收的存储单元的数量;
写入使能电路,被配置为:响应于所述索引写入数量不等于所述待回收数量并且待写入索引为有效数据,令写入使能信号有效,其中,所述待写入索引为与所述空间回收模块所请求回收的存储单元相对应的一个或多个存储单元索引;
索引写入电路,被配置为:响应于所述写入使能信号有效,向与一个待写入索引对应的数据单元写入所述第一值。
13.根据权利要求1所述的装置,其特征在于,所述装置还包括:
寄存器配置模块,被配置为:在所述装置上电后,将所述索引映射数据中的所有数据单元置位为所述第一值。
14.根据权利要求13所述的装置,其特征在于,所述寄存器配置模块还被配置为:向所述索引映射模块和所述空间管理模块中的至少一个发送至少一个指针的起始位置和终止位置,所述至少一个指针中的每个指针指向所述索引映射数据中的部分或全部数据单元。
15.根据权利要求1所述的装置,其特征在于,所述索引映射数据包括至少两个子索引映射数据,每个子索引映射数据包括至少一个数据单元,并且,每个子索引映射数据中的各数据单元所对应的存储单元具有预设大小集合中的一种预设大小。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括请求分类模块,所述请求分类模块被配置为:
将所述空间管理请求拆分为至少一个子管理请求,每个子管理请求用于管理所述至少两个子索引映射数据中的一个子索引映射数据中的数据单元。
17.一种计算设备,其特征在于,所述计算设备包括根据权利要求1-16中任一项所述的用于管理存储空间的装置。
18.一种用于管理存储空间的方法,其特征在于,所述方法包括:
接收来自外部请求源的空间管理请求,所述空间管理请求包括空间分配请求;
根据所述空间管理请求,将索引映射数据中的至少一个数据单元更新为第一值或第二值,所述第一值指示与数据单元对应的存储单元处于可分配状态,所述第二值指示与数据单元对应的存储单元处于已分配状态,
其中,所述索引映射数据包括多个数据单元,每个数据单元对应于存储空间中的一个具有预设大小的存储单元,以及
其中,所述根据所述空间管理请求,将索引映射数据中的至少一个数据单元更新为第一值或第二值包括:基于所述空间分配请求所请求分配的空间的大小,将所述索引映射数据中的至少一个数据单元由所述第一值更新为所述第二值,并基于所述至少一个数据单元在所述索引映射数据中的位置,向所述外部请求源分配与所述至少一个数据单元对应的至少一个存储单元。
19.一种芯片,其特征在于,所述芯片包括如权利要求1至16中任一项所述的用于管理存储空间的装置。
CN202211561506.0A 2022-12-07 2022-12-07 用于管理存储空间的装置及方法、计算设备、芯片 Active CN115599556B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211561506.0A CN115599556B (zh) 2022-12-07 2022-12-07 用于管理存储空间的装置及方法、计算设备、芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211561506.0A CN115599556B (zh) 2022-12-07 2022-12-07 用于管理存储空间的装置及方法、计算设备、芯片

Publications (2)

Publication Number Publication Date
CN115599556A CN115599556A (zh) 2023-01-13
CN115599556B true CN115599556B (zh) 2023-04-18

Family

ID=84853346

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211561506.0A Active CN115599556B (zh) 2022-12-07 2022-12-07 用于管理存储空间的装置及方法、计算设备、芯片

Country Status (1)

Country Link
CN (1) CN115599556B (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4380240B2 (ja) * 2003-07-01 2009-12-09 株式会社日立製作所 ヒントに基づく記憶領域の割当と性能保証方法、記憶装置及び管理プログラム
CN113835898B (zh) * 2017-11-29 2024-03-01 北京忆芯科技有限公司 存储器分配器
CN113254365A (zh) * 2021-06-09 2021-08-13 北京字节跳动网络技术有限公司 存储空间的管理方法、装置、设备、介质和程序产品
CN115080455B (zh) * 2022-08-22 2022-11-01 华控清交信息科技(北京)有限公司 一种计算机芯片、计算机板卡、存储空间分配方法及装置

Also Published As

Publication number Publication date
CN115599556A (zh) 2023-01-13

Similar Documents

Publication Publication Date Title
US11467955B2 (en) Memory system and method for controlling nonvolatile memory
US11669444B2 (en) Computing system and method for controlling storage device
WO2016082196A1 (zh) 文件访问方法、装置及存储设备
US20200364145A1 (en) Information processing apparatus and method for controlling storage device
CN112948318A (zh) 一种Linux操作系统下基于RDMA的数据传输方法及装置
CN115357540A (zh) 存储系统及其计算存储处理器、固体硬盘和数据读写方法
US20240086113A1 (en) Synchronous write method and device, storage system and electronic device
CN115658328B (zh) 用于管理存储空间的装置及方法、计算设备、芯片
CN115658326B (zh) 用于管理存储空间的装置及方法、计算设备、芯片
CN115904688A (zh) 内存管理方法、装置、处理器及计算设备
CN115599556B (zh) 用于管理存储空间的装置及方法、计算设备、芯片
CN115168259B (zh) 一种数据存取方法、装置、设备和计算机可读存储介质
CN107861887B (zh) 一种串行易失性存储器的控制方法
CN115658327B (zh) 用于管理存储空间的装置及方法、计算设备、芯片
CN115617707B (zh) 用于管理存储空间的装置及方法、计算设备、芯片
CN115599705B (zh) 用于管理存储空间的装置及方法、计算设备、芯片
CN108536619B (zh) 快速恢复ftl表的方法与装置
CN117472792A (zh) 用于管理存储空间的装置及方法、计算设备
CN114238165B (zh) 数据处理方法、数据处理装置以及存储介质
US11972110B2 (en) Storage device and storage system
CN112612726B (zh) 基于缓存一致性的数据存储方法、装置、处理芯片及服务器
US20230236730A1 (en) Storage device and storage system
CN117472794A (zh) 用于管理存储空间的装置及方法、计算设备
US20240061577A1 (en) Recycle optimization in storage engine
CN112486410A (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