CN109840150A - 存储器分配器 - Google Patents

存储器分配器 Download PDF

Info

Publication number
CN109840150A
CN109840150A CN201711222525.XA CN201711222525A CN109840150A CN 109840150 A CN109840150 A CN 109840150A CN 201711222525 A CN201711222525 A CN 201711222525A CN 109840150 A CN109840150 A CN 109840150A
Authority
CN
China
Prior art keywords
storage unit
cache unit
unit
memory allocator
index
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.)
Granted
Application number
CN201711222525.XA
Other languages
English (en)
Other versions
CN109840150B (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.)
BEIJING CORE TECHNOLOGY Co Ltd
Original Assignee
BEIJING CORE 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 BEIJING CORE TECHNOLOGY Co Ltd filed Critical BEIJING CORE TECHNOLOGY Co Ltd
Priority to CN201711222525.XA priority Critical patent/CN109840150B/zh
Priority to CN202111153405.5A priority patent/CN113835898B/zh
Publication of CN109840150A publication Critical patent/CN109840150A/zh
Application granted granted Critical
Publication of CN109840150B publication Critical patent/CN109840150B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/5022Mechanisms to release resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/958Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本申请公开了存储器分配器。本申请的存储器分配器用于管理N个缓存单元的分配与释放,所述存储器分配器包括标记寄存器和索引寄存器;标记寄存器与索引寄存器各自包括N个存储单元,N为自然数;标记寄存器的存储单元、索引寄存器的存储单元以及被管理的缓存单元的数量相同。

Description

存储器分配器
技术领域
本申请涉及集成电路技术领域,具体涉及存储器分配器及其应用。
背景技术
在信息处理设备中,程序或组件请求、使用并且释放存储器。例如,当应用程序打开文件时,该应用程序或其他组件可请求存储器创建与该文件相关的数据结构。作为另一示例,当用户浏览网站时,web浏览器可请求存储器存储来自网站的内容,以准备在显示器上呈现内容。在用户关闭浏览器之后,web浏览器可指示用于存储和呈现先前网站的内容的存储器可被释放并且返回到存储池。
相比于客户机计算机,处理来自其他组件的请求常常对高效地使用存储器有更大压力。低效存储器管理器可能浪费存储器并导致差性能。
发明内容
本申请的目的在于提出基于硬件的存储器分配器,提高存储器分配、释放的速度、性能和/或效率。
本申请的第一方面,提供了根据本申请第一方面的第一存储器分配器,用于管理N个缓存单元的分配与释放,所述存储器分配器包括标记寄存器和索引寄存器;标记寄存器与索引寄存器各自包括N个存储单元,N为自然数;标记寄存器的存储单元、索引寄存器的存储单元以及被管理的缓存单元的数量相同。
根据本申请的第一方面的第一存储器分配器,提供了根据本申请第一方面的第二存储器分配器,索引寄存器的存储单元的值指示缓存单元。
根据本申请的第一方面的第一或第二存储器分配器,提供了根据本申请第一方面的第三存储器分配器,索引寄存器的存储单元存储缓存单元的地址。
根据本申请的第一方面的第一或第二存储器分配器,提供了根据本申请第一方面的第四存储器分配器,索引寄存器的存储单元中存储序号,序号与缓存单元一一对应。
根据本申请的第一方面的第一至第四存储器分配器之一,提供了根据本申请第一方面的第五存储器分配器,标记寄存器的存储单元同缓存单元一一对应。
根据本申请的第一方面的第一至第五存储器分配器之一,提供了根据本申请第一方面的第六存储器分配器,标记存储器的存储单元的值,指示与其对应的缓存单元是否已被分配。
根据本申请的第一方面的第一至第六存储器分配器之一,提供了根据本申请第一方面的第七存储器分配器,存储器分配器还包括读指针寄存器与写指针寄存器。
根据本申请的第一方面的第七存储器分配器,提供了根据本申请第一方面的第八存储器分配器,读指针寄存器与写指针寄存器各自记录索引,索引指示索引寄存器的存储单元。
根据本申请的第一方面的第一至第八存储器分配器之一,提供了根据本申请第一方面的第九存储器分配器,响应于存储器分配器被初始化,标记寄存器的所有存储单元被设置为指示对应的缓存单元为“未分配”状态。
根据本申请的第一方面的第一至第九存储器分配器之一,提供了根据本申请第一方面的第十存储器分配器,响应于存储器分配器被初始化,索引寄存器的存储单元各自被写入指示缓存单元之一的索引。
根据本申请的第一方面的第十存储器分配器,提供了根据本申请第一方面的第十一存储器分配器,索引寄存器的各个存储单元的索引互不重复。
根据本申请的第一方面的第一至第十一存储器分配器之一,提供了根据本申请第一方面的第十二存储器分配器,响应于存储器分配器被初始化,设置读指针与写指针,都指向索引寄存器的第一个存储单元。
根据本申请的第一方面的第一至第十二存储器分配器之一,提供了根据本申请第一方面的第十三存储器分配器,存储器分配器还记录缓存单元的总数,以及被分配的缓存单元的数量。
根据本申请的第一方面的第七至第十三存储器分配器之一,提供了根据本申请第一方面的第十四存储器分配器,响应于接收缓存单元分配请求,所述存储器分配器输出读指针寄存器所指示的索引寄存器的存储单元的值作为被分配的缓存单元的地址或索引。
根据本申请的第一方面的第七至第十三存储器分配器之一,提供了根据本申请第一方面的第十五存储器分配器,响应于接收缓存单元分配请求,所述存储器分配器还将读指针所指向的索引寄存器的存储单元的值作为索引,确定标记寄存器的存储单元。
根据本申请的第一方面的第十五存储器分配器,提供了根据本申请第一方面的第十六存储器分配器,所述存储器分配器在标记寄存器的被确定的存储单元中设置标记,以记录对应的缓存单元“已分配”状态。
根据本申请的第一方面的第十五存储器分配器,提供了根据本申请第一方面的第十七存储器分配器,若标记寄存器的被确定的存储单元指示对应的缓存单元处于“已分配”状态,所述存储器分配器递增读指针寄存器的值,直到找到读指针所指示的索引寄存器的第一存储单元,以所述第一存储单元的值作为索引确定的标记寄存器的存储单元指示“未分配”状态。
根据本申请的第一方面的第十五存储器分配器,提供了根据本申请第一方面的第十八存储器分配器,还将读指针递增,指向索引寄存器的下一个存储单元。
根据本申请的第一方面的第七至第十八存储器分配器之一,提供了根据本申请第一方面的第十九存储器分配器,响应于接收缓存单元释放请求,所述存储器分配器将将缓存单元释放请求指示的索引,记录在写指针寄存器所指示的索引寄存器的存储单元中,以及还用该索引获取标记寄存器的存储单元,在获取的标记寄存器的存储单元中记录“未分配”状态。
根据本申请的第一方面的第十九存储器分配器,提供了根据本申请第一方面的第二十存储器分配器,还递增写指针。
根据本申请的第一方面的第十九或第二十存储器分配器,提供了根据本申请第一方面的第二十一存储器分配器,响应于接收到缓存单元释放请求,还检查所释放的缓存单元的索引所指示的标记寄存器的存储单元是否指示对应的缓存单元处于“未分配”状态。
根据本申请的第一方面的第十九或第二十存储器分配器,提供了根据本申请第一方面的第二十二存储器分配器,响应于接收到缓存单元释放请求,若被释放的缓存单元处于“未分配”状态,输出异常信号。
根据本申请的第二方面,提供了根据本申请第二方面的第一管理缓存单元的方法,响应于接收缓存单元分配请求,输出被分配的缓存单元的地址或索引。
根据本申请的第二方面的第一管理缓存单元的方法,提供了根据本申请第二方面的第二管理缓存单元的方法,响应于缓存单元分配请求,获取读指针所指向的索引寄存器的存储单元的值,作为缓存单元分配的结果。
根据本申请的第二方面的第一管理缓存单元的方法,提供了根据本申请第二方面的第三管理缓存单元的方法,响应于缓存单元分配请求,根据读指针所指向的索引寄存器的存储单元的值,确定被分配的缓存单元的地址。
根据本申请的第二方面的第一至第三管理缓存单元的方法之一,提供了根据本申请第二方面的第四管理缓存单元的方法,还将读指针所指向的索引寄存器的存储单元的值作为索引,确定标记寄存器的存储单元,并在确定的标记寄存器的存储单元中设置标记,以记录对应的缓存单元“已分配”状态。
根据本申请的第二方面的第四管理缓存单元的方法,提供了根据本申请第二方面的第五管理缓存单元的方法,使读指针指向索引寄存器的下一个存储单元。
根据本申请的第二方面的第五管理缓存单元的方法,提供了根据本申请第二方面的第六管理缓存单元的方法,用索引寄存器的该下一个存储单元的值作为索引查询标记寄存器的存储单元,并确保该存储单元指示对应的缓存单元为“未分配”状态。
根据本申请的第二方面的第六管理缓存单元的方法,提供了根据本申请第二方面的第七管理缓存单元的方法,若该下一个存储单元指示对应的缓存单元为“已分配”状态,继续递增读指针的值,直到找到一个索引寄存器的存储单元,其所存储的值作为索引的标记寄存器的存储单元指示对应的缓存单元处于“未分配”状态的并使读指针指向索引寄存器的存储单元。
根据本申请的第二方面的第一至第七管理缓存单元的方法之一,提供了根据本申请第二方面的第八管理缓存单元的方法,响应于接收缓存单元分配请求,还通过检查已分配的缓存单元数量是否小于缓存单元的总量,以确定是否有缓存单元可供分配。
根据本申请的第二方面的第八管理缓存单元的方法,提供了根据本申请第二方面的第九管理缓存单元的方法,仅在有缓存单元可分配的情况下,才分配缓存单元。
根据本申请的第二方面的第一至第九管理缓存单元的方法之一,提供了根据本申请第二方面的第十管理缓存单元的方法,响应于缓存单元分配请求,从读指针指向的存储单元获取值,以值作为索引检查标记存储器的存储单元是否指示缓存单元处于“未分配”状态。
根据本申请的第二方面的第十管理缓存单元的方法,提供了根据本申请第二方面的第十一管理缓存单元的方法,若缓存单元处于“已分配”状态,递增读指针,检查读指针所指示的索引寄存器的存储单元所存储的值,用该值作为索引访问标记寄存器的存储单元。
根据本申请的第二方面的第十一管理缓存单元的方法,提供了根据本申请第二方面的第十二管理缓存单元的方法,若标记寄存器的存储单元指示缓存单元处于“已分配”状态,递增读指针,检查读指针所指示的索引寄存器的下一个存储单元所存储的值,用该值作为索引访问标记寄存器的存储单元,直至标记寄存器的存储单元指示缓存单元处于“未分配”状态,从读指针指向的存储单元获取值,作为被分配的缓存单元的地址或索引。
根据本申请的第二方面的第一至第十二管理缓存单元的方法之一,提供了根据本申请第二方面的第十三管理缓存单元的方法,若读指针已指向索引寄存器的最后一个存储单元,再递增读指针,将使读指针发生回绕而指向索引寄存器的第一个存储单元。
根据本申请的第三方面,提供了根据本申请第三方面的第一管理缓存单元的方法,响应于接收到缓存单元释放请求,将缓存单元释放请求指示的索引,记录在写指针所指示的索引寄存器的存储单元中,以及还用该索引获取标记寄存器的存储单元,在标记寄存器的存储单元中记录对应的缓存单元处于“未分配”状态。
根据本申请的第三方面的第一管理缓存单元的方法,提供了根据本申请第三方面的第二管理缓存单元的方法,还递增写指针。
根据本申请的第三方面的第一或第二管理缓存单元的方法,提供了根据本申请第三方面的第三管理缓存单元的方法,响应于接收到缓存单元释放请求,还检查所释放的缓存单元的索引所指示的标记寄存器的存储单元是否指示对应的缓存单元处于“未分配”状态。
根据本申请的第三方面的第一至第三管理缓存单元的方法之一,提供了根据本申请第三方面的第四管理缓存单元的方法,若被释放的缓存单元处于“未分配”状态,输出异常信号。
根据本申请的第三方面的第一至第四管理缓存单元的方法之一,提供了根据本申请第三方面的第五管理缓存单元的方法,还包括:执行根据本申请第二方面的方法之一。
根据本申请的第四方面,提供一种包括程序代码的程序,当被载入存储设备并在存储设备上执行时,所述程序代码使所述存储设备执行根据本发明第二方面或第三方面的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1A是根据本申请实施例的存储器分配器电路的框图;
图1B是根据本申请实施例的缓存单元;
图2A是根据本申请实施例的接收缓存单元分配请求时的存储器分配器的状态;
图2B是根据本申请的另一实施例的接收缓存单元分配请求后的存储器分配器的状态;
图2C是根据本申请的又一实施例的接收缓存单元分配请求后的存储器分配器的状态;
图3A是根据本申请的实施例的接收缓存单元释放请求后的存储器分配器的状态;
图3B是根据本申请的另一实施例的接收缓存单元释放请求后的存储器分配器的状态;
图3C是根据本申请的又一实施例的接收缓存单元释放请求后的存储器分配器的状态。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1A是根据本申请实施例的存储器分配器电路的框图。存储器分配器包括标记寄存器与索引寄存器。标记寄存器与索引寄存器各自包括多个(例如N个)存储单元,用于管理N个缓存单元的分配与释放。标记寄存器的存储单元、索引寄存器的存储单元以及被管理的缓存单元的数量相同。
图1B是根据本申请实施例的缓存单元。被管理的缓存单元有N个,由诸如DRAM、SRAM的存储器提供,外部耦合于内存分配器所在的集成电路,或者同内存分配器集成在同一集成电路中。N个缓存单元的每个具有地址,每个缓存单元的地址由索引寄存器的值所指示。作为举例,在索引寄存器的每个存储单元中存储缓存单元之一的地址。作为又一个例子,在索引寄存器的每个存储单元中存储序号,通过计算计算出对应缓存单元的地址。多个缓存单元在存储器中的地址可以是连续的或不连续的。
标记寄存器的存储单元同缓存单元一一对应。通过缓存单元的地址,或者索引寄存器的存储单元的值,可得到标记寄存器的存储单元的索引或地址。标记存储器的存储单元的值,指示与其对应的缓存单元是否已被分配。
存储器分配器还包括读指针寄存器与写指针寄存器。读指针寄存器与写指针寄存器各自记录索引,用于指向索引寄存器的存储单元。
作为举例,参看图1A,根据本申请实施例的存储器分配器被初始化后,标记寄存器的所有存储单元被设置为指示“未分配”状态(例如,用值“0”指示),而索引寄存器的存储单元各自被写入指示缓存单元之一的索引。索引寄存器的各个存储单元的索引互不重复,且唯一,索引寄存器的每个存储单元的唯一值指示缓存单元之一。以及设置读指针与写指针,使其指向索引寄存器的第一个存储单元(图1A中最左侧的存储单元)。
可选地,存储器分配器还记录缓存单元的总数,以及被分配的缓存单元的数量。
为获取并使用缓存单元,向存储器分配器提供缓存单元分配请求,作为响应,存储器分配器输出被分配的缓存单元的地址或索引。
存储器分配器响应于缓存单元分配请求,输出读指针所指向的索引寄存器的存储单元的值,作为缓存单元分配的结果。或者,存储器分配器根据读指针所指向的索引寄存器的存储单元的值,确定被分配的缓存单元的地址。存储器分配器还将读指针所指向的索引寄存器的存储单元的值作为索引,确定标记寄存器的存储单元,并在确定的标记寄存器的存储单元中设置标记,以记录对应的缓存单元为“已分配”状态。还将读指针的值递增,指向索引寄存器的下一个存储单元。可选地,还用索引寄存器的该下一个存储单元的值作为索引查询标记寄存器的存储单元,并确保该存储单元指示对应的缓存单元为“未分配”状态。若该存储单元指示对应的缓存单元为“已分配”状态,继续递增读指针的值,直到找到一个索引寄存器的存储单元(A),其所存储的值作为索引的标记寄存器的存储单元指示对应的缓存单元处于“未分配”状态的并使读指针指向索引寄存器的存储单元(A)。
作为举例,参看图1A,读指针指向索引寄存器的第一个存储单元(其值为0)。响应于缓存单元分配请求,将读指针指向的索引寄存器的第一个存储单元的值0作为对分配的缓存单元的指示。以及用该值0作为索引,将标记寄存器的索引为0的存储单元的值设置为指示“已分配”状态(例如,用值“1”指示),还将读指针递增,以指向索引寄存器指向第二个存储单元。图2A是根据本申请的实施例的接收缓存单元分配请求时的存储器分配器的状态。可选地,响应于缓存单元分配请求,存储器分配器还通过检查已分配的缓存单元数量是否小于缓存单元的总量,以确定是否有缓存单元可供分配。并且,仅在有缓存单元可控分配的情况下,才分配缓存单元。依然可选地,读指针递增后指向索引寄存器指向第二个存储单元,还获取第二个存储单元的值(1)作为索引,获取索引为1的标记寄存器的存储单元(第二个存储单元),由于标记寄存器的索引为1的存储单元的值指示“未分配”状态,则不再调整读指针,使其保持指向索引寄存器的索引为1的存储单元。
缓存单元分配请求的请求方,从存储器分配器获得了缓存单元的索引(值0),并可以根据需要使用该缓存单元。
作为又一个例子,在存储器分配器处于图2A展示的状态下,接收到缓存单元分配请求。将读指针指向的索引寄存器的第二个存储单元的值1作为对分配的缓存单元的指示。以及用该值1作为索引,将标记寄存器的索引为1的存储单元的值设置为指示“已分配”状态,还将读指针递增,以指向索引寄存器指向第三个存储单元。图2B是根据本申请的另一实施例的接收缓存单元分配请求后的存储器分配器的状态,图2B是此时存储器分配器的状态。
可选地,响应于缓存单元分配请求而更新读指针时,不检查以读指针所指向的索引寄存器的存储单元的值为索引的标记寄存器的存储单元是否指示缓存单元处于“未分配”状态。而是在下次响应于缓存单元分配请求访问索引寄存器的存储单元时,从读指针指向的存储单元获取值,以值作为索引检查标记存储器的存储单元是否指示缓存单元处于“未分配”状态。若缓存单元处于“已分配”状态,递增读指针,检查索引寄存器的下一个存储单元所存储器的值,用该值作为索引访问标记寄存器的存储单元,并期待标记寄存器的存储单元指示缓存单元(B)处于“未分配”状态。若缓存单元(B)处于“已分配”状态,重复上述过程,继续递增读指针。
可以理解地,若读指针已指向索引寄存器的最后一个存储单元,再递增读指针,将使读指针发生回绕而指向索引寄存器的第一个存储单元。
作为又一个例子,图2C是根据本申请的又一实施例的接收缓存单元分配请求后的存储器分配器的状态,存储器分配器处于图2C展示的状态。读指针指向索引寄存器的第N-2个存储单元(存储单元存储的值为N-3)。以值N-3为索引的标记寄存器的存储单元指示对应的缓存单元“未分配”。索引寄存器的第N-1个存储单元存储的值为N-2,以值N-2为索引的标记寄存器的存储单元指示对应的缓存单元“已分配”。
接收到缓存单元分配请求。将读指针指向的索引寄存器的第N-2个存储单元的值N-3作为对分配的缓存单元的指示。以及用该值N-3作为索引,将标记寄存器的索引N-3的存储单元的值设置为指示“已分配”,还将读指针递增。读指针递增后,读指针指向值为N-2的索引寄存器的存储单元,而以N-2为索引获取的标记寄存器指示对应的缓存单元“已分配”,继续递增读指针,使读指针指向索引寄存器的第N个存储单元(图2C中,其值为N-1)。
响应于接收到缓存单元释放请求(指示了待释放的缓存单元的索引),存储器分配器将缓存单元释放请求指示的索引,记录在写指针所指示的索引寄存器的存储单元中,以及还用该索引获取标记寄存器的存储单元,在标记寄存器的存储单元中记录对应的缓存单元处于“未分配”状态。还递增写指针。
作为又一个例子,图3A是根据本申请的实施例的接收缓存单元释放请求后的存储器分配器的状态,存储器分配器处于图3A展示的状态。读指针指向索引寄存器的第N个存储单元(存储单元存储的值为N-1)。写指针指向索引寄存器的第1个存储单元(存储单元的值为0)。此时,存储器分配器接收到缓存单元释放请求,请求释放由索引值2所指示的缓存单元。存储器分配器将缓存单元释放请求所指示的索引值2写入写指针所指示的索引寄存器的第1个存储单元,以及还根据缓存单元释放请求所指示的索引值2作为索引,访问标记寄存器的索引为2的存储单元(第3个存储单元),将标记寄存器的索引为2的存储单元设置为指示“未分配”状态(例如,用值“0”指示)。还使写指针递增。图3B是根据本申请的另一实施例的接收缓存单元释放请求后的存储器分配器的状态,此时,存储器分配器的状态由图3B所展示。
作为依然又一个例子,存储器分配器处于图3B展示的状态。此时,存储器分配器接收到缓存单元释放请求,请求释放由索引值0所指示的缓存单元。存储器分配器将缓存单元释放请求所指示的索引值0写入写指针所指示的索引寄存器的第2个存储单元,以及还根据缓存单元释放请求所指示的索引值0作为索引,访问标记寄存器的索引为0的存储单元(第1个存储单元),将标记寄存器的索引为0的存储单元设置为指示“未分配”状态(例如,用值“0”指示)。还使写指针递增。图3C是根据本申请的又一实施例的接收缓存单元释放请求后的存储器分配器的状态,此时,存储器分配器的状态由图3C所展示。
可选地,根据本申请的实施例,存储器分配器处理缓存单元释放请求时,不考虑所释放的缓存单元的索引所指示的标记寄存器的存储单元的值。而在又一个例子中,存储器分配器处理缓存单元释放请求时,检查所释放的缓存单元的索引所指示的标记寄存器的存储单元是否指示对应的缓存单元处于“未分配”状态。若缓存单元处于“未分配”状态,意味着对该缓存单元的释放存在逻辑错误,并可选地,输出异常信号,以指示对缓存单元的重复释放。
根据本申请实施例的存储器分配器可被软件、固件和/或硬件使用,以分配和/或释放缓存单元。
除了根据图1A所展示的实现为硬件的存储器分配器,根据跟申请实施例的存储器分配器也可实现为软件和/或固件,或者软件、固件和/或硬件的组合。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP,Digital Signal Processor)、专用集成电路(ASIC,Application Specific Integrated Circuits)等等。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种存储器分配器,其特征在于,用于管理N个缓存单元的分配与释放,所述存储器分配器包括标记寄存器和索引寄存器;标记寄存器与索引寄存器各自包括N个存储单元,N为自然数;标记寄存器的存储单元、索引寄存器的存储单元以及被管理的缓存单元的数量相同。
2.如权利要求1所述的存储器分配器,其特征在于,存储器分配器还包括读指针寄存器与写指针寄存器。
3.如权利要求2所述的存储器分配器,其特征在于,响应于接收缓存单元分配请求,所述存储器分配器输出读指针寄存器所指示的索引寄存器的存储单元的值作为被分配的缓存单元的地址或索引。
4.如权利要求2所述的存储器分配器,其特征在于,响应于接收缓存单元分配请求,所述存储器分配器还将读指针所指向的索引寄存器的存储单元的值作为索引,确定标记寄存器的存储单元。
5.如权利要求4所述的存储器分配器,其特征在于,所述存储器分配器在标记寄存器的被确定的存储单元中设置标记,以记录对应的缓存单元“已分配”状态。
6.如权利要求4所述的存储器分配器,其特征在于,
若标记寄存器的被确定的存储单元指示对应的缓存单元处于“已分配”状态,所述存储器分配器递增读指针寄存器的值,直到找到读指针所指示的索引寄存器的第一存储单元,以所述第一存储单元的值作为索引确定的标记寄存器的存储单元指示“未分配”状态。
7.一种管理缓存单元的方法,其特征在于,响应于接收缓存单元分配请求,输出被分配的缓存单元的地址或索引。
8.如权利要求7所述的方法,其特征在于,响应于缓存单元分配请求,从读指针指向的存储单元获取值,以值作为索引检查标记存储器的存储单元是否指示缓存单元处于“未分配”状态。
9.如权利要求8所述的方法,其特征在于,若缓存单元处于“已分配”状态,递增读指针,检查读指针所指示的索引寄存器的存储单元所存储的值,用该值作为索引访问标记寄存器的存储单元。
10.一种管理缓存单元的方法,其特征在于,响应于接收到缓存单元释放请求,将缓存单元释放请求指示的索引,记录在写指针所指示的索引寄存器的存储单元中,以及还用该索引获取标记寄存器的存储单元,在标记寄存器的存储单元中记录对应的缓存单元处于“未分配”状态。
CN201711222525.XA 2017-11-29 2017-11-29 存储器分配器 Active CN109840150B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201711222525.XA CN109840150B (zh) 2017-11-29 2017-11-29 存储器分配器
CN202111153405.5A CN113835898B (zh) 2017-11-29 2017-11-29 存储器分配器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711222525.XA CN109840150B (zh) 2017-11-29 2017-11-29 存储器分配器

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202111153405.5A Division CN113835898B (zh) 2017-11-29 2017-11-29 存储器分配器

Publications (2)

Publication Number Publication Date
CN109840150A true CN109840150A (zh) 2019-06-04
CN109840150B CN109840150B (zh) 2021-10-26

Family

ID=66881654

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202111153405.5A Active CN113835898B (zh) 2017-11-29 2017-11-29 存储器分配器
CN201711222525.XA Active CN109840150B (zh) 2017-11-29 2017-11-29 存储器分配器

Family Applications Before (1)

Application Number Title Priority Date Filing Date
CN202111153405.5A Active CN113835898B (zh) 2017-11-29 2017-11-29 存储器分配器

Country Status (1)

Country Link
CN (2) CN113835898B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115599556B (zh) * 2022-12-07 2023-04-18 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备、芯片
CN115658327B (zh) * 2022-12-07 2023-10-31 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备、芯片
CN115599705B (zh) * 2022-12-07 2023-03-14 摩尔线程智能科技(北京)有限责任公司 用于管理存储空间的装置及方法、计算设备、芯片

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070083491A1 (en) * 2004-05-27 2007-04-12 Silverbrook Research Pty Ltd Storage of key in non-volatile memory
CN101923517A (zh) * 2009-06-17 2010-12-22 中兴通讯股份有限公司 一种缓冲区管理方法及系统
US20120042150A1 (en) * 2010-08-11 2012-02-16 Primesense Ltd. Multiprocessor system-on-a-chip for machine vision algorithms
WO2015081889A1 (zh) * 2013-12-06 2015-06-11 上海芯豪微电子有限公司 一种缓存系统和方法
CN104798062A (zh) * 2012-11-21 2015-07-22 相干逻辑公司 包含具有多层互连的散布的处理器的处理系统
US20150317087A1 (en) * 2014-05-05 2015-11-05 Texas Instruments Incorporated Filler bank control circuit for synchronous fifo queues and other memory devices
CN105354153A (zh) * 2015-11-23 2016-02-24 浙江大学城市学院 一种紧耦合异构多处理器数据交换缓存的实现方法
CN105378687A (zh) * 2014-03-07 2016-03-02 华为技术有限公司 访问文件的方法和相关设备
CN106325758A (zh) * 2015-06-17 2017-01-11 深圳市中兴微电子技术有限公司 一种队列存储空间管理方法及装置
CN106469123A (zh) * 2015-08-10 2017-03-01 北京忆恒创源科技有限公司 一种基于nvdimm的写缓存分配、释放方法及其装置
CN106681829A (zh) * 2016-12-09 2017-05-17 上海斐讯数据通信技术有限公司 一种内存管理方法及系统
CN107025184A (zh) * 2016-02-01 2017-08-08 深圳市中兴微电子技术有限公司 一种数据管理方法及装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130185477A1 (en) * 2012-01-18 2013-07-18 International Business Machines Corporation Variable latency memory delay implementation
CN103902471B (zh) * 2012-12-28 2017-08-25 华为技术有限公司 数据缓存处理方法和装置
US9971686B2 (en) * 2015-02-23 2018-05-15 Intel Corporation Vector cache line write back processors, methods, systems, and instructions
CN104750561B (zh) * 2015-04-15 2019-09-10 苏州中晟宏芯信息科技有限公司 寄存器堆缓存资源的动态释放方法、系统及一种处理器

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070083491A1 (en) * 2004-05-27 2007-04-12 Silverbrook Research Pty Ltd Storage of key in non-volatile memory
CN101923517A (zh) * 2009-06-17 2010-12-22 中兴通讯股份有限公司 一种缓冲区管理方法及系统
US20120042150A1 (en) * 2010-08-11 2012-02-16 Primesense Ltd. Multiprocessor system-on-a-chip for machine vision algorithms
CN104798062A (zh) * 2012-11-21 2015-07-22 相干逻辑公司 包含具有多层互连的散布的处理器的处理系统
WO2015081889A1 (zh) * 2013-12-06 2015-06-11 上海芯豪微电子有限公司 一种缓存系统和方法
CN105378687A (zh) * 2014-03-07 2016-03-02 华为技术有限公司 访问文件的方法和相关设备
US20150317087A1 (en) * 2014-05-05 2015-11-05 Texas Instruments Incorporated Filler bank control circuit for synchronous fifo queues and other memory devices
CN106325758A (zh) * 2015-06-17 2017-01-11 深圳市中兴微电子技术有限公司 一种队列存储空间管理方法及装置
CN106469123A (zh) * 2015-08-10 2017-03-01 北京忆恒创源科技有限公司 一种基于nvdimm的写缓存分配、释放方法及其装置
CN105354153A (zh) * 2015-11-23 2016-02-24 浙江大学城市学院 一种紧耦合异构多处理器数据交换缓存的实现方法
CN107025184A (zh) * 2016-02-01 2017-08-08 深圳市中兴微电子技术有限公司 一种数据管理方法及装置
CN106681829A (zh) * 2016-12-09 2017-05-17 上海斐讯数据通信技术有限公司 一种内存管理方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
EVYATAR HEMO: ""Performance Coding: Codes for Fast Write and Read in Multi-Level NVMs"", 《IEEE TRANSACTIONS ON COMMUNICATIONS》 *
SHY、GIRL: ""存储空间布局"", 《HTTPS://DEVELOPER.ALIYUN.COM/ARTICLE/48636》 *
彭陈: ""DDR3存储控制器的设计与实现"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Also Published As

Publication number Publication date
CN113835898B (zh) 2024-03-01
CN109840150B (zh) 2021-10-26
CN113835898A (zh) 2021-12-24

Similar Documents

Publication Publication Date Title
CN105830022B (zh) 访问文件的方法和装置
CN105893269B (zh) 一种Linux系统下内存管理方法
US8108587B2 (en) Free-space reduction in cached database pages
CN109840150A (zh) 存储器分配器
CN105183764B (zh) 一种数据分页方法及装置
CN111538461B (zh) 基于固态硬盘缓存的数据读写方法、装置及存储介质
CN103914398B (zh) 用以管理具有实体地址空间的存储器使用率的方法及装置
CN106354615A (zh) 固态硬盘日志生成方法及其装置
JP2009514096A5 (zh)
US20110004720A1 (en) Method and apparatus for performing full range random writing on a non-volatile memory
CN113641596B (zh) 缓存管理方法、缓存管理装置、处理器
CN104321750B (zh) 在共享存储器编程中保持释放一致性的方法和系统
CN108121628A (zh) 一种读写速度的测试方法、装置及电子设备
CN104516822A (zh) 一种内存访问方法和设备
CN101930345A (zh) 一种基于块访问的闪存读写方法
CN107256233B (zh) 一种数据存储方法和装置
CN115562587A (zh) 应用于存储介质的数据存储方法、装置、设备及存储介质
JP2018513454A (ja) カラム・ストアにおける挿入およびポイント・クエリ・オペレーションの効率的パフォーマンス
US7035988B1 (en) Hardware implementation of an N-way dynamic linked list
CN105279029B (zh) 一种基于作业计算资源的局部存储动态分配方法
CN106547472B (zh) 存储阵列管理方法及装置
CN113515474A (zh) 数据处理装置、方法、计算机设备和存储介质
CN109840048A (zh) 存储命令处理方法及其存储设备
CN115904255B (zh) 一种数据请求方法、装置、设备及存储介质
CN104636079B (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