CN114116556A - 一种动态分配队列缓存的方法、系统、存储介质及设备 - Google Patents

一种动态分配队列缓存的方法、系统、存储介质及设备 Download PDF

Info

Publication number
CN114116556A
CN114116556A CN202111273290.3A CN202111273290A CN114116556A CN 114116556 A CN114116556 A CN 114116556A CN 202111273290 A CN202111273290 A CN 202111273290A CN 114116556 A CN114116556 A CN 114116556A
Authority
CN
China
Prior art keywords
queue
entry
resource
task
dma
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.)
Pending
Application number
CN202111273290.3A
Other languages
English (en)
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.)
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Original Assignee
Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center 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 Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd filed Critical Shandong Yunhai Guochuang Cloud Computing Equipment Industry Innovation Center Co Ltd
Priority to CN202111273290.3A priority Critical patent/CN114116556A/zh
Publication of CN114116556A publication Critical patent/CN114116556A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/14Handling requests for interconnection or transfer
    • G06F13/20Handling requests for interconnection or transfer for access to input/output bus
    • G06F13/28Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal
    • G06F13/30Handling requests for interconnection or transfer for access to input/output bus using burst mode transfer, e.g. direct memory access DMA, cycle steal with priority control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明提供了一种动态分配队列缓存的方法,包括以下步骤:向任务队列写入完成条目的发送请求,完成条目的发送请求及相关信息作为一个任务而被写入;从任务队列顺次取出一个任务,用任务中的队列号查询资源映射表;从资源映射表返回资源编号及相应的计数值,将计数值自增1后写回队列号的计数值字段;根据资源编号和计数值确定条目缓存块的地址,然后用相关信息构造完成条目并写入相应的条目缓存块的地址;在不满足DMA搬移条件的情况下,从任务队列取出下一个任务并进行后续步骤,并且在满足DMA搬移条件的情况下,将资源编号和相关信息写入DMA请求队列,从资源编号对应的条目缓存块搬移数据至完成队列,随后发出应答信号。

Description

一种动态分配队列缓存的方法、系统、存储介质及设备
技术领域
本发明涉及计算机硬件领域,尤其涉及一种动态分配队列缓存的方法、系统、存储介质及设备。
背景技术
在包含硬件加速设备的系统中,主机与加速设备之间的交互多采用命令队列和完成队列的方式,即在主机或者加速设备的内存中放置命令队列和完成队列,命令队列中的条目由主机填写,用来记录主机向加速设备发送的命令;完成队列中的条目由加速板卡填写,用来记录命令队列中的每个命令的完成情况。
典型的交互流程是,当主机需要向加速设备发送命令时,主机向命令队列里新增一个条目,然后通过写门铃寄存器等方式通知加速设备。加速设备通过DMA(直接存储器访问)的方式将命令队列的条目取回,然后解析并执行。主机也可以选择填写多个命令条目后,再写入一次门铃寄存器通知加速设备,这样可以有效提高加速设备的DMA效率。当加速设备完成该命令后填写完成条目,然后将它通过DMA搬移到完成队列中,并通过中断通知主机或由主机轮询完成队列状态获取响应信息。
命令队列和完成队列一般有多个,用来增加交互的并发度,以提高加速设备的利用率。一种典型场景是给主机端处理器的每个逻辑核分配一对队列,因此一般情况下,队列数量可以高达数十对到数百对。处于其他的考虑,队列数量也可以更多,因此一些标准协议如NVMe(非易失性内存主机控制器接口规范)协议规定最大的支持的队列数量可以高达数万对。
加速设备中用来承担完成条目的填写和组织、控制DMA搬移的工作一般由被称为系统的电路模块来完成。
发明内容
在传统的系统电路中,通常根据任务完成的时间,先后为它们形成完成条目并将条目写入缓存队列,然后再通过DMA依次将每个条目搬移到完成队列。这种电路具有结构简单的优势,但是,由于完成队列有多个,因此,写入缓存队列的相邻的完成条目很可能属于不同的完成队列,而不同的完成队列对应了不同的内存地址,因此,一次DMA过程往往只能搬移一个或少数几个完成条目。对于常用的总线如PCIe(高速串行计算机扩展总线标准)总线等,一次较小载荷的数据传输意味着极大的带宽浪费。
作为改进方案,聚合特性被引入系统的设计。即系统不再针对每一次的完成条目触发DMA操作,而是将属于同一个完成队列的条目分别进行缓存,当缓存够一定量时,再触发一次DMA操作将所有的条目进行搬移,以此增大总线的传输载荷,提高总线利用率。
当增加聚合特性后,DMA的发送顺序不再严格等于完成条目的形成顺序,因此无法简单采用上述传统系统的队列方式组织DMA的发送,此外由于同时存在多个队列的完成条目需要被暂存,因此对于每一个队列,需要保存条目以及相应的队列信息。
传统的支持聚合的系统,一般采用多组硬件电路服务于多个完成队列,每一组硬件包括队列条目缓存、队列计数器、队列指针寄存器等队列信息等。多组硬件之间采用仲裁器连接,通过仲裁的方式获取DMA的访问权限。同时,为了解决当某一个队列的条目缓存存满,在等待仲裁和DMA传输的过程中无法接受新的完成条目而反压上游处理逻辑的问题,一般传统的系统会采用乒乓缓存或增大缓存容量的方式来解决。
上述传统的系统采用多组硬件电路服务于多个队列,是一种相对直接和比较简单的做法,但是代价是存在大量相同功能的电路,带来了成本的上升;每个队列独享的条目缓存也往往带来硬件资源的浪费,因为硬件在设计时需要按最大支持的队列数规划资源,而实际的使用中只有少数场景需要用到所有的队列,由此造成缓存的闲置,加上需要采用乒乓缓存的方法,成本将被进一步推高;此外计数器、队列信息寄存器等碎片化的缓存也无法采用相对低成本的RAM(随机存取存储器)实现。
有鉴于此,本发明的目的在于提出一种动态分配队列缓存的方法、系统、存储介质及设备,用以解决现有分配队列缓存的方法和系统中的缺点。
基于上述目的,本发明提供了一种动态分配队列缓存的方法,包括以下步骤:
向任务队列写入完成条目的发送请求,所述完成条目的发送请求及相关信息作为一个任务而被写入;
从所述任务队列顺次取出一个任务,用所述任务中的队列号查询资源映射表;
从所述资源映射表返回资源编号及相应的计数值,将所述计数值自增1后写回所述队列号的计数值字段;
根据所述资源编号和计数值确定条目缓存块的地址,然后用所述相关信息构造完成条目并写入相应的条目缓存块的地址;
在不满足DMA搬移条件的情况下,从所述任务队列取出下一个任务并进行后续步骤,并且在满足DMA搬移条件的情况下,将所述资源编号和相关信息写入DMA请求队列,从所述资源编号对应的条目缓存块搬移数据至完成队列,随后发出应答信号。
在一些实施例中,所述DMA搬移条件是指所述计数值等于所述条目缓存块能够容纳的最大条目数-1。
在一些实施例中,在满足DMA搬移条件的情况下,向空闲缓存资源队列获取空闲资源编号,将该空闲资源编号从空闲缓存资源队列移出,并在资源映射表中将所述空闲资源编号写入所述队列的资源编号字段,并将计数值字段写零。在满足DMA搬移条件的情况下,将所述资源编号和相关信息写入DMA请求队列之后,从所述DMA请求队列中获取搬移所述条目缓存块的任务,根据任务信息配置DMA控制器,然后将所述资源编号和相关信息写入DMA等待队列。在从所述资源编号对应的条目缓存块搬移数据至完成队列,并发出应答信号之后,接收所述应答信号的DMA等待队列将所述资源编号写入空闲缓存资源队列。在将所述资源编号和相关信息写入DMA请求队列后,从任务队列中取出下一个任务。
在一些实施例中,所述条目缓存块的数量能够大于、等于或小于所述队列数量。
在一些实施例中,取所述条目缓存块的首地址的高位作为块编号,并通过该块编号访问所述条目缓存块。
在一些实施例中,当一队列的完成条目在条目缓存块中超过规定时间仍未满足DMA搬移条件时,将该队列的资源编号和相关信息写入DMA请求队列,从所述资源编号对应的条目缓存块搬移数据至完成队列,并且更换该队列的条目缓存块。
本发明的另一方面,还提供了一种动态分配队列缓存的系统,包括:
任务队列模块,用于接收命令处理单元写入的完成条目的发送请求,所述完成条目的发送请求及相关信息作为一个任务而被写入;
资源映射表模块,其至少包含资源编号和计数值,所述资源编号记录所述任务中的队列被分配的条目缓存块的编号,所述计数值记录该条目缓存块中被使用的条目数;
完成条目构造器模块,其从所述任务队列模块顺次取出一个任务,在所述资源映射表模块中查询所述任务中的队列号,从所述资源映射表模块返回资源编号及相应的计数值,将所述计数值自增1后写回所述队列号的计数值字段,根据所述资源编号和计数值确定条目缓存块的地址,然后用所述相关信息构造完成条目并写入相应的条目缓存块的地址,并且在不满足DMA搬移条件的情况下,所述完成条目构造器模块从所述任务队列模块取出下一个任务并进行后续操作;
DMA请求队列模块,在满足DMA搬移条件的情况下,所述完成条目构造器模块将所述资源编号和相关信息写入该DMA请求队列模块;以及
DMA等待队列模块,在DMA控制器从所述资源编号对应的条目缓存块搬移数据至完成队列,所述DMA等待队列模块接收所述DMA控制器发出的应答信号。
在一些实施例中,所述DMA搬移条件是指所述计数值等于所述条目缓存块能够容纳的最大条目数-1。
在一些实施例中,所述完成条目构造器模块在将所述资源编号和相关信息写入DMA请求队列模块后,从任务队列模块中取出下一个任务。
在一些实施例中,系统还包括:超时控制模块,用于当一队列的完成条目在条目缓存块中超过规定时间仍未满足DMA搬移条件时,将该队列的资源编号和相关信息写入DMA请求队列模块,以从所述资源编号对应的条目缓存块搬移数据至完成队列,并且通知所述资源映射表模块更换该队列的条目缓存块。
本发明至少具有以下有益技术效果:
1、通过支持聚合特性提高DMA的效率,可以提高总线带宽利用率;
2、采用动态的缓存分配机制避免了静态分配引起的资源闲置的同时也解决了队列资源不足引发的等待,可以提高缓存利用率,降低电路面积;
3、采用统一的执行电路代替队列独享的执行电路,提高了执行电路的利用率,降低了电路面积;
4、由于避免了仲裁器等的设计,当队列数量增加时,仅需要等比例提高各缓存的大小,无需对电路结构进行重新设计,具有良好的扩展性;
5、可以使用成本更低的RAM来代替分布式的寄存器对队列的各种信息进行缓存,能进一步降低电路成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为根据本发明实施例提供的动态分配队列缓存的方法的示意图;
图2为根据本发明实施例提供的动态分配队列缓存的方法的一个示例的示意图;
图3为根据本发明实施例提供的动态分配队列缓存的系统的示意图;
图4为根据本发明实施例提供的动态分配队列缓存的系统的一个示例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称的非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备固有的其他步骤或单元。
基于上述目的,本发明实施例的第一个方面,提出了一种动态分配队列缓存的方法的实施例。图1示出的是本发明提供的动态分配队列缓存的方法的实施例的示意图,图2为根据本发明实施例提供的动态分配队列缓存的方法的一个示例的示意图。如图1和图2所示,本发明实施例包括如下步骤:
步骤S10、向任务队列写入完成条目的发送请求,完成条目的发送请求及相关信息作为一个任务而被写入;
步骤S20、从任务队列顺次取出一个任务,用任务中的队列号查询资源映射表;
步骤S30、从资源映射表返回资源编号及相应的计数值,将计数值自增1后写回队列号的计数值字段;
步骤S40、根据资源编号和计数值确定条目缓存块的地址,然后用相关信息构造完成条目并写入相应的条目缓存块的地址;以及
步骤S50、在不满足DMA搬移条件的情况下,从任务队列取出下一个任务并进行后续步骤,并且在满足DMA搬移条件的情况下,将资源编号和相关信息写入DMA请求队列,从资源编号对应的条目缓存块搬移数据至完成队列,随后发出应答信号。
在一些优选实施例中,DMA搬移条件是指计数值等于条目缓存块能够容纳的最大条目数-1。在满足DMA搬移条件的情况下,向空闲缓存资源队列获取空闲资源编号,将该空闲资源编号从空闲缓存资源队列移出,并在资源映射表中将空闲资源编号写入队列的资源编号字段,并将计数值字段写零。在满足DMA搬移条件的情况下,将资源编号和相关信息写入DMA请求队列之后,从DMA请求队列中获取搬移条目缓存块的任务,根据任务信息配置DMA控制器,然后将资源编号和相关信息写入DMA等待队列。在从资源编号对应的条目缓存块搬移数据至完成队列,并发出应答信号之后,接收应答信号的DMA等待队列将资源编号写入空闲缓存资源队列。在将资源编号和相关信息写入DMA请求队列后,从任务队列中取出下一个任务。
在一些优选实施例中,条目缓存块的数量能够大于、等于或小于队列数量。取条目缓存块的首地址的高位作为块编号,并通过该块编号访问条目缓存块。
在一些优选实施例中,方法还包括步骤S60、当一队列的完成条目在条目缓存块中超过规定时间仍未满足DMA搬移条件时,将该队列的资源编号和相关信息写入DMA请求队列,从资源编号对应的条目缓存块搬移数据至完成队列,并且更换该队列的条目缓存块。
以下描述本发明的动态分配队列缓存的方法的具体实施方式。命令处理单元向任务队列中写入多个任务,其中第一个任务属于队列Q1,第二和第三个任务属于队列Q2,且此时Q2的缓存块剩余一个条目空间。
完成条目构造器从任务队列中取出队列号Q1和其余信息,用Q1查询资源映射表。
资源映射表返回资源编号为B1(缓存块B1)和相应的计数值,并且将计数值自增1写回队列号Q1的计数值字段。
完成条目构造器根据资源编号B1和计数值确定条目缓存块的地址,然后用相关信息构造完成条目并写入相应条目缓存块的地址。
由于缓存块B1此时并不满足DMA搬移的条件,完成条目构造器从任务队列中取出下一个任务。
完成条目构造器用队列号Q2向资源映射表发出查询请求。
资源映射表返回队列号Q2的资源编号B2(缓存块B2)和相应的计数值,同时,资源映射表检测到此时计数值的大小等于条目最大值-1,因此,资源映射表尝试向空闲缓存资源队列获取新的空闲资源。
空闲缓存资源队列向资源映射表提供一个新的资源编号B3(缓存块B3),然后该编号被从空闲缓存资源队列中移出。
资源映射表将B3资源编号写入队列号Q2的资源编号字段,并将计数值字段写零。
完成条目构造器从资源映射表中获取资源编号B2,计数值为最大条目数-1。
完成条目构造器从条目缓存中找到缓存块B2的最后一个条目的地址,构造完成条目并写入该地址。
完成条目构造器将资源编号B2和其他信息写入DMA请求队列。
条目搬移器从DMA请求队列中获取搬移缓存块B2的任务,根据任务信息配置DMA控制器,然后将资源编号B2和相关信息写入DMA等待队列。
DMA控制器接受请求,从缓存块B2搬移数据至完成队列。DMA过程完成后,控制器发出应答信号。
该应答信号由DMA等待队列接收,然后DMA等待队列将资源编号B2写入空闲缓存资源队列。
完成条目构造器在请求被DMA请求队列接收后,从任务队列中获取下一个任务,该任务仍然属于Q2队列。
完成条目构造器向资源映射表发出查询请求,获得资源编号B3(缓存块B3)和计数值0。同时,资源映射表将队列号Q2的计数值字段改写为1。
完成条目构造器构造完成条目,并将它写入缓存块B3的第一个条目。
完成条目构造器继续从任务队列中获取新的任务。
如图1和图2所示,本发明提出了一种动态分配队列缓存的方法。通过支持聚合特性提高DMA的效率,可以提高总线带宽利用率。采用动态的缓存分配机制避免了静态分配引起的资源闲置的同时也解决了队列资源不足引发的等待,可以提高缓存利用率,降低电路面积。采用统一的执行电路代替队列独享的执行电路,提高了执行电路的利用率,降低了电路面积。由于避免了仲裁器等的设计,当队列数量增加时,仅需要等比例提高各缓存的大小,无需对电路结构进行重新设计,具有良好的扩展性。以使用成本更低的RAM来代替分布式的寄存器对队列的各种信息进行缓存,能进一步降低电路成本。
本发明实施例的第二个方面,还提供了一种动态分配队列缓存的系统。图3示出的是本发明提供的动态分配队列缓存的系统的实施例的示意图,图4为根据本发明实施例提供的动态分配队列缓存的系统的一个示例的示意图。如图3和图4所示,一种动态分配队列缓存的系统,包括:任务队列模块10,用于接收命令处理单元写入的完成条目的发送请求,完成条目的发送请求及相关信息作为一个任务而被写入;资源映射表模块20,其至少包含资源编号和计数值,资源编号记录任务中的队列被分配的条目缓存块的编号,计数值记录该条目缓存块中被使用的条目数;完成条目构造器模块30,其从任务队列模块10顺次取出一个任务,在资源映射表模块20中查询任务中的队列号,从资源映射表模块20返回资源编号及相应的计数值,将计数值自增1后写回队列号的计数值字段,根据资源编号和计数值确定条目缓存块的地址,然后用相关信息构造完成条目并写入相应的条目缓存块的地址,并且在不满足DMA搬移条件的情况下,完成条目构造器模块30从任务队列模块10取出下一个任务并进行后续操作;DMA请求队列模块40,在满足DMA搬移条件的情况下,完成条目构造器模块30将资源编号和相关信息写入该DMA请求队列模块40;以及DMA等待队列模块50,在DMA控制器从资源编号对应的条目缓存块搬移数据至完成队列,DMA等待队列模块50接收DMA控制器发出的应答信号。
在一些优选实施例中,DMA搬移条件是指计数值等于条目缓存块能够容纳的最大条目数-1。完成条目构造器模块30在将资源编号和相关信息写入DMA请求队列模块40后,从任务队列模块10中取出下一个任务。
在一些优选实施例中,系统还包括超时控制模块60,用于当一队列的完成条目在条目缓存块中超过规定时间仍未满足DMA搬移条件时,将该队列的资源编号和相关信息写入DMA请求队列模块40,以从资源编号对应的条目缓存块搬移数据至完成队列,并且通知资源映射表模块20更换该队列的条目缓存块。
根据本发明的动态分配队列缓存的系统的一个实施例,其包括任务队列模块、完成条目构造器模块、空闲缓存资源队列模块、资源映射表模块、条目缓存模块、条目搬移器模块、DMA请求队列模块、DMA等待队列模块和超时控制逻辑模块。系统对外连接命令处理单元和DMA控制器,其中命令处理单元在完成命令条目后,向系统发出完成条目发送请求和相关信息,系统将完成条目发送完成后,通知命令处理单元;DMA控制器是DMA数据搬移的实际执行机构,它在接收DMA请求后,按顺序完成请求并发送应答信息。
命令处理单元每处理完成一个命令条目,向系统发送一个完成条目的发送请求,请求和相关信息被写入任务队列模块。
资源映射表模块用来维护队列编号和条目缓存资源之间的映射关系。该表一共有N行(见图4),N等于系统支持的最大完成队列数量。表中的每一行与一个完成队列对应,一种最简单的对应方式是将队列号作为行号。表中需要记录至少两部分信息,分别是资源编号和计数值。资源编号记录该队列被分配的条目缓存块的编号,计数值记录该条目缓存块中被使用的条目数。
完成条目构造器模块用来根据任务队列模块中提供的信息,构造一个完成条目,并写入指定的条目缓存模块中的条目缓存块。完成条目构造器模块需要首先向资源映射表模块发出一个查询请求,提供当前待构造的完成条目的队列号,资源映射表模块根据该队列号查询到资源编号和计数值返回给构造器,同时,资源映射表模块会将该队列号对应的计数值也读出,自增1后写回计数值字段。如果此时计数值满足一定的条件,一般情况下该条件是计数值等于条目缓存块可以容纳的最大条目数-1,则完成条目构造器模块将在完成当前条目的构造和写入后,向DMA请求队列发出一个搬移请求,同时,资源映射表模块也将从空闲缓存资源队列模块中取出一个空闲的缓存块的编号写入该队列的资源编号字段,并且将该队列的计数器编号字段清零,如图2所示。
由于完成条目构造器模块是按任务顺序进行构造,每构造一个条目仅需访问1次资源映射表模块,因此,该表的存储区可以用片内SRAM(静态随机存取存储器)甚至片外DRAM(动态随机存取存储器)来实现,而无需采用面积更大的分布式的寄存器。
条目缓存模块由M个条目缓存块组成,M和N可以没有必然的关系。一般处于性能考虑,M需要大于等于N,这样可以保证即使所有队列都在并发工作,一般下也不会出现由于缓存块被全部占用而阻塞的情况。如果处于减小面积的考虑,允许在性能和面积之间进行折中,也可以将M设置小于N,但构造器应该对当前未获得缓存块的队列进行过滤,让这些任务延后执行,以防止死锁。允许对缓存块数量进行灵活调整,甚至允许块数量小于队列数,是本发明区别于传统方法的一个特点。
每个条目缓存块可以容纳L条完成条目,L的选取与完成条目的大小、总线传输的帧结构和目标总线利用率相关。例如,一个典型的PCIe写帧需要16字节的帧头,如果需要总线利用率在90%以上,则需要将载荷定为144字节以上,一般选取256字节。对于NVMe协议,一个完成条目为16字节,则一个缓存块需要容纳16个条目。
每个缓存块通过块编号进行访问,块编号可以选择一种简单的映射方式,例如取块首地址的高位作为块编号。相比于传统方案需要采用多片缓存块,本发明可以采用一整片缓存来实现,电路面积更加节省。同时,该片缓存也可用片外DRAM,以实现更低成本的方案。
空闲缓存资源队列模块用来记录空闲的条目缓存块资源,该队列的深度等于条目缓存块的数量,队列的每一个元素是空闲的条目缓存块编号。在初始化时,该队列为满,内部元素依次为0,1,…,M-1。当资源映射表模块需要新的缓存块时,从该队列中获取一个元素。当某一个缓存块已经被DMA搬移到完成队列后,由DMA等待队列模块将编号写回队列空闲缓存资源队列模块,然后该块可以重新被分配。
当完成条目构造器模块构造完成某一个缓存块的最后一个条目后,构造器将该缓存块的编号等信息写入DMA请求队列模块。
条目搬移器模块依次从DMA请求队列模块中获取待搬移的缓存块编号等信息,然后配置DMA控制器进行搬移。配置完成后,将资源编号等信息写入DMA等待队列模块。
DMA控制器根据配置,从条目缓存模块的指定位置读取数据并搬移到完成队列的指定位置,完成后,DMA控制器发出应答信号,该信号被DMA等待队列捕获,然后DMA等待队列模块取出资源编号写入空闲缓存资源队列模块以释放该缓存块。
超时控制模块用来监控每个队列是否超时,以避免由于长时间达不到聚合条件引起已就绪的完成条目无法及时传递到主机的问题。当某队列的完成条目在缓存中超过一定的时间未被触发DMA操作,则由超时控制模块向DMA请求队列模块发送任务,并且通知资源映射表模块更换该队列的条目缓存块。
如图3和图4所示,本发明提出了一种动态分配队列缓存的系统。通过一块RAM保存资源映射表,该表记录队列号与资源块的映射关系以及计数值,另一块RAM划分为以块为单位的缓存,用上述块编号表示。通过空闲资源缓存队列动态管理缓存块,当某一块数据填满时,从上述资源队列中获取空闲块更新映射表;当DMA任务完成时,将资源编号写回空闲资源队列进行回收。通过支持聚合特性提高DMA的效率,可以提高总线带宽利用率。采用动态的缓存分配机制避免了静态分配引起的资源闲置的同时也解决了队列资源不足引发的等待,可以提高缓存利用率,降低电路面积。采用统一的执行电路代替队列独享的执行电路,提高了执行电路的利用率,降低了电路面积。由于避免了仲裁器等的设计,当队列数量增加时,仅需要等比例提高各缓存的大小,无需对电路结构进行重新设计,具有良好的扩展性。以使用成本更低的RAM来代替分布式的寄存器对队列的各种信息进行缓存,能进一步降低电路成本。
应当理解,在相互不冲突的情况下,以上针对根据本发明的动态分配队列缓存的方法阐述的所有实施方式、特征和优势同样地适用于根据本发明的动态分配队列缓存的系统和存储介质。
最后需要说明的是,本文的计算机可读存储介质(例如,存储器)可以是易失性存储器或非易失性存储器,或者可以包括易失性存储器和非易失性存储器两者。作为例子而非限制性的,非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦写可编程ROM(EEPROM)或快闪存储器。易失性存储器可以包括随机存取存储器(RAM),该RAM可以充当外部高速缓存存储器。作为例子而非限制性的,RAM可以以多种形式获得,比如同步RAM(DRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据速率SDRAM(DDRSDRAM)、增强SDRAM(ESDRAM)、同步链路DRAM(SLDRAM)、以及直接Rambus RAM(DRRAM)。所公开的方面的存储设备意在包括但不限于这些和其它合适类型的存储器。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
结合这里的公开所描述的各种示例性逻辑块、模块和电路可以利用被设计成用于执行这里功能的下列部件来实现或执行:通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或其它可编程逻辑器件、分立门或晶体管逻辑、分立的硬件组件或者这些部件的任何组合。通用处理器可以是微处理器,但是可替换地,处理器可以是任何传统处理器、控制器、微控制器或状态机。处理器也可以被实现为计算设备的组合,例如,DSP和微处理器的组合、多个微处理器、一个或多个微处理器结合DSP和/或任何其它这种配置。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。

Claims (10)

1.一种动态分配队列缓存的方法,其特征在于,包括以下步骤:
向任务队列写入完成条目的发送请求,所述完成条目的发送请求及相关信息作为一个任务而被写入;
从所述任务队列顺次取出一个任务,用所述任务中的队列号查询资源映射表;
从所述资源映射表返回资源编号及相应的计数值,将所述计数值自增1后写回所述队列号的计数值字段;
根据所述资源编号和计数值确定条目缓存块的地址,然后用所述相关信息构造完成条目并写入相应的条目缓存块的地址;以及
在不满足DMA搬移条件的情况下,从所述任务队列取出下一个任务并进行后续步骤,并且在满足DMA搬移条件的情况下,将所述资源编号和相关信息写入DMA请求队列,从所述资源编号对应的条目缓存块搬移数据至完成队列,随后发出应答信号。
2.根据权利要求1所述的方法,其特征在于,
所述DMA搬移条件是指所述计数值等于所述条目缓存块能够容纳的最大条目数-1。
3.根据权利要求2所述的方法,其特征在于,
在满足DMA搬移条件的情况下,向空闲缓存资源队列获取空闲资源编号,将该空闲资源编号从空闲缓存资源队列移出,并在资源映射表中将所述空闲资源编号写入所述队列的资源编号字段,并将计数值字段写零。
4.根据权利要求3所述的方法,其特征在于,
在满足DMA搬移条件的情况下,将所述资源编号和相关信息写入DMA请求队列之后,从所述DMA请求队列中获取搬移所述条目缓存块的任务,根据任务信息配置DMA控制器,然后将所述资源编号和相关信息写入DMA等待队列,
在从所述资源编号对应的条目缓存块搬移数据至完成队列,并发出应答信号之后,接收所述应答信号的DMA等待队列将所述资源编号写入空闲缓存资源队列。
5.根据权利要求4所述的方法,其特征在于,
在将所述资源编号和相关信息写入DMA请求队列后,从任务队列中取出下一个任务。
6.根据权利要求1所述的方法,其特征在于,
取所述条目缓存块的首地址的高位作为块编号,并通过该块编号访问所述条目缓存块。
7.根据权利要求1所述的方法,其特征在于,
当一队列的完成条目在条目缓存块中超过规定时间仍未满足DMA搬移条件时,将该队列的资源编号和相关信息写入DMA请求队列,从所述资源编号对应的条目缓存块搬移数据至完成队列,并且更换该队列的条目缓存块。
8.一种动态分配队列缓存的系统,其特征在于,包括:
任务队列模块,用于接收命令处理单元写入的完成条目的发送请求,所述完成条目的发送请求及相关信息作为一个任务而被写入;
资源映射表模块,其至少包含资源编号和计数值,所述资源编号记录所述任务中的队列被分配的条目缓存块的编号,所述计数值记录该条目缓存块中被使用的条目数;
完成条目构造器模块,其从所述任务队列模块顺次取出一个任务,在所述资源映射表模块中查询所述任务中的队列号,从所述资源映射表模块返回资源编号及相应的计数值,将所述计数值自增1后写回所述队列号的计数值字段,根据所述资源编号和计数值确定条目缓存块的地址,然后用所述相关信息构造完成条目并写入相应的条目缓存块的地址,并且在不满足DMA搬移条件的情况下,所述完成条目构造器模块从所述任务队列模块取出下一个任务并进行后续操作;
DMA请求队列模块,在满足DMA搬移条件的情况下,所述完成条目构造器模块将所述资源编号和相关信息写入该DMA请求队列模块;以及
DMA等待队列模块,在DMA控制器从所述资源编号对应的条目缓存块搬移数据至完成队列,所述DMA等待队列模块接收所述DMA控制器发出的应答信号。
9.根据权利要求8所述的系统,其特征在于:
所述DMA搬移条件是指所述计数值等于所述条目缓存块能够容纳的最大条目数-1。
10.根据权利要求8所述的系统,其特征在于,还包括:
超时控制模块,用于当一队列的完成条目在条目缓存块中超过规定时间仍未满足DMA搬移条件时,将该队列的资源编号和相关信息写入DMA请求队列模块,以从所述资源编号对应的条目缓存块搬移数据至完成队列,并且通知所述资源映射表模块更换该队列的条目缓存块。
CN202111273290.3A 2021-10-29 2021-10-29 一种动态分配队列缓存的方法、系统、存储介质及设备 Pending CN114116556A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111273290.3A CN114116556A (zh) 2021-10-29 2021-10-29 一种动态分配队列缓存的方法、系统、存储介质及设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111273290.3A CN114116556A (zh) 2021-10-29 2021-10-29 一种动态分配队列缓存的方法、系统、存储介质及设备

Publications (1)

Publication Number Publication Date
CN114116556A true CN114116556A (zh) 2022-03-01

Family

ID=80379555

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111273290.3A Pending CN114116556A (zh) 2021-10-29 2021-10-29 一种动态分配队列缓存的方法、系统、存储介质及设备

Country Status (1)

Country Link
CN (1) CN114116556A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114610653A (zh) * 2022-05-10 2022-06-10 沐曦集成电路(上海)有限公司 基于gpu内存的地址请求方法
CN115858160A (zh) * 2022-12-07 2023-03-28 江苏为是科技有限公司 远程直接内存访问虚拟化资源分配方法及装置、存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049841A (en) * 1997-11-10 2000-04-11 International Business Machines Corporation Method and apparatus of selecting data transmission channels
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US20040049601A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
CN104133784A (zh) * 2014-07-24 2014-11-05 大唐移动通信设备有限公司 一种报文缓存管理方法与装置
CN109388590A (zh) * 2018-09-28 2019-02-26 中国电子科技集团公司第五十二研究所 提升多通道dma访问性能的动态缓存块管理方法和装置
CN111176553A (zh) * 2018-11-13 2020-05-19 西部数据技术公司 固态驱动器中的带宽限制
CN112306928A (zh) * 2020-11-19 2021-02-02 山东云海国创云计算装备产业创新中心有限公司 一种面向流传输的直接内存访问方法以及dma控制器
US20210328944A1 (en) * 2021-06-25 2021-10-21 Intel Corporation Methods, apparatus, and articles of manufacture to dynamically allocate cache

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6049841A (en) * 1997-11-10 2000-04-11 International Business Machines Corporation Method and apparatus of selecting data transmission channels
US20040049580A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Receive queue device with efficient queue flow control, segment placement and virtualization mechanisms
US20040049601A1 (en) * 2002-09-05 2004-03-11 International Business Machines Corporation Split socket send queue apparatus and method with efficient queue flow control, retransmission and sack support mechanisms
CN104133784A (zh) * 2014-07-24 2014-11-05 大唐移动通信设备有限公司 一种报文缓存管理方法与装置
CN109388590A (zh) * 2018-09-28 2019-02-26 中国电子科技集团公司第五十二研究所 提升多通道dma访问性能的动态缓存块管理方法和装置
CN111176553A (zh) * 2018-11-13 2020-05-19 西部数据技术公司 固态驱动器中的带宽限制
CN112306928A (zh) * 2020-11-19 2021-02-02 山东云海国创云计算装备产业创新中心有限公司 一种面向流传输的直接内存访问方法以及dma控制器
US20210328944A1 (en) * 2021-06-25 2021-10-21 Intel Corporation Methods, apparatus, and articles of manufacture to dynamically allocate cache

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘畅: ""使用RDMA加速分布式深度学习"", 《中国优秀硕士学位论文全文数据库(电子期刊)》, no. 06 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114610653A (zh) * 2022-05-10 2022-06-10 沐曦集成电路(上海)有限公司 基于gpu内存的地址请求方法
CN115858160A (zh) * 2022-12-07 2023-03-28 江苏为是科技有限公司 远程直接内存访问虚拟化资源分配方法及装置、存储介质
CN115858160B (zh) * 2022-12-07 2023-12-05 江苏为是科技有限公司 远程直接内存访问虚拟化资源分配方法及装置、存储介质

Similar Documents

Publication Publication Date Title
CN107992436B (zh) 一种NVMe数据读写方法及NVMe设备
US10860493B2 (en) Method and apparatus for data storage system
CN114116556A (zh) 一种动态分配队列缓存的方法、系统、存储介质及设备
US20220327049A1 (en) Method and storage device for parallelly processing the deallocation command
CN114780458A (zh) 数据处理的方法和存储系统
EP1647894A2 (en) Information processing apparatus with parallel DMA processes
WO2009111971A1 (zh) 缓存数据写入系统及方法和缓存数据读取系统及方法
EP3470971B1 (en) Method, apparatus, and system for accessing memory device
CN113918101B (zh) 一种写数据高速缓存的方法、系统、设备和存储介质
US20230153264A1 (en) Data transmission method, chip, and device
AU2015402888B2 (en) Computer device and method for reading/writing data by computer device
US11960945B2 (en) Message passing circuitry and method
WO2011149482A1 (en) Storing data in any of a plurality of buffers in a memory controller
CN111258932A (zh) 加速ufs协议处理的方法与存储控制器
US11231964B2 (en) Computing device shared resource lock allocation
CN116755635B (zh) 一种硬盘控制器缓存系统、方法、硬盘设备及电子设备
WO2019174206A1 (zh) 一种存储设备的数据读取方法、装置、终端设备和存储介质
US11733918B2 (en) Systems and methods for processing commands for storage devices
WO2024045817A1 (zh) 用于调度simt架构处理器的返回数据的方法及相应处理器
JPH11143779A (ja) 仮想記憶装置におけるページング処理システム
CN110035021B (zh) 针对原子数据访问请求进行的资源分配
WO2023278176A1 (en) Work queue for communication between a producer and a consumer
CN109213424B (zh) 并发io命令的无锁处理方法
EP4120087A1 (en) Systems, methods, and devices for utilization aware memory allocation
US20230385190A1 (en) Communication method, apparatus, and system

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