链表处理方法、装置、加速器、电路板、设备和存储介质制造方法及图纸

技术编号:34102994 阅读:20 留言:0更新日期:2022-07-11 23:52
本申请提供一种链表处理方法、装置、加速器、电路板、设备和存储介质,该方法包括:接收来自主机的多个链表读请求至预设的命令提交队列中,其中,命令提交队列被配置有预设数量的容纳空间,预设数量的容纳空间用于缓存所述多个链表读请求;根据每个所述链表读请求的接收次序,依次从存储器中读取每个所述链表读请求对应的链表数据,并依次执行多个所述链表数据,链表数据包括:至少一个命令列表;在一个所述链表数据执行完毕后,释放已执行完毕的所述链表数据在所述命令提交队列中对应的容纳空间,以从所述主机接收下一个链表读请求。本申请降低了CPU与计算加速器之间的交互功耗,命令预取模块通过共享命令列表存储器,节约芯片资源。资源。资源。

【技术实现步骤摘要】
链表处理方法、装置、加速器、电路板、设备和存储介质


[0001]本申请涉及计算机
,具体而言,涉及一种链表处理方法、装 置、加速器、电路板、设备和存储介质。

技术介绍

[0002]图形处理器(Graphics Processing Unit,简称“GPU”),又称显示核心、 视觉处理器、显示芯片,是一种专门在个人电脑、工作站、游戏机和一些 移动设备(如平板电脑、智能手机等)上做图像和图形相关运算工作的微 处理器。近年来,图形处理器GPU和人工智能专用加速芯片随着深度学 习技术的发展而得到了广泛的应用。GPU或人工智能加速芯片通常作为主 机CPU(Central Processing Unit)的计算加速器,由主机CPU产生命令和 分配资源,并和CPU一起完成数据处理任务。一般的,CPU位于在主板 上,而计算加速器在单独的电路板上,两者通过PCIe(peripheralcomponent interconnect express,一种高速串行计算机扩展总线标准)总线 相连接。这种分离的设计会对计算系统产生很多挑战,如CPU和计算加 速器之间需要高效的通信,分离的存储器之间需要高效的交换数据。
[0003]主机CPU发给计算加速器的命令通常以命令列表的形式储存在存储 器中,该存储器可能是主机端的存储器,也可能是加速器端的存储器。每 个命令列表通常被设计成环形缓冲结构,环形缓冲结构通过写指针和读指 针来完成命令列表的管理:当主机CPU端的软件添加命令时,会更新写 指针。计算加速器读取命令后,会更新读指针。计算加速器需要检查环形 结构的写指针来判断是否有新的命令产生,主机端的软件需要检查环形结 构的读指针来判断命令存储是否可以继续添加新的命令。并且主机一次只 能提交给计算加速器一个命令列表,要等到计算加速器通知主机上一个命 令列表读完了,主机才会继续提交下一个命令列表,很容易造成计算加速 器无效等待间隙,效率低下。

技术实现思路

[0004]本申请实施例的目的在于提供一种链表处理方法、装置、加速器、电 路板、设备和存储介质,采用多链表结构管理命令列表,可以降低CPU 与计算加速器之间的交互频次,降低访存功耗,减少计算加速器的无效等 待时间,减少主机与计算加速器之间的数据交互空隙,提高系统性能。
[0005]通过预先检查最后一条目是否为链接命令可以减少新的命令列表的读 取延迟,实现了在不需要添加额外的缓存的情况下,节约芯片资源。
[0006]本申请实施例第一方面提供了一种命令链表处理方法,包括:接收来 自主机的多个链表读请求至预设的命令提交队列中,其中,所述命令提交 队列被配置有预设数量的容纳空间,所述预设数量的容纳空间用于缓存所 述多个链表读请求;根据每个所述链表读请求的接收次序,依次从存储器 中读取每个所述链表读请求对应的链表数据,并依次执行多个所述链表数 据,所述链表数据包括:至少一个命令列表;在一个所述链表数据执行完 毕后,释放已执行完毕的所述链表数据在所述命令提交队列中对应的容纳 空间,以从所述主
机接收下一个链表读请求。
[0007]于一实施例中,所述接收来自主机的多个链表读请求至预设的命令提 交队列中,包括:当检测到来自主机的一个所述链表读请求时,若所述命 令提交队列中现有的所述链表读请求数量小于所述预设数量,则接收当前 的所述链表读请求至所述命令提交队列中。
[0008]于一实施例中,所述根据每个所述链表读请求的接收次序,依次从存 储器中读取每个所述链表读请求对应的链表数据,包括:
[0009]针对每个所述链表读请求,当检测到所述命令提交队列的命令读请求 时,根据所述命令读请求从指定的存储器中获取待处理的命令列表,其中 所述命令列表中包括多个条目,每个所述条目中存储有待处理的命令;检 查所述命令列表中最后一个条目存储的是否为链接命令;若所述命令列表 最后一个条目存储的是链接命令,根据所述链接命令从指定的存储器中获 取新的命令列表。
[0010]于一实施例中,所述当检测到所述命令提交队列的命令读请求时,根 据所述命令读请求从指定的存储器中获取待处理的命令列表,包括:当检 测到所述命令提交队列的命令读请求时,响应于所述命令读请求,从命令 提交队列中解析出所述待处理的命令列表的存储地址和长度信息;根据所 述存储地址和所述长度信息,向指定的存储器发出访问请求,并缓存所述 存储器返回的命令列表数据至预设缓存,并更新所述预设缓存的写指针。
[0011]于一实施例中,所述根据所述存储地址和所述长度信息,向指定的存 储器发出访问请求,并缓存所述存储器返回的命令列表数据至预设缓存, 包括:根据所述长度信息,为所述命令读请求从所述预设缓存中分配对应 的存储空间,根据所述存储地址向指定的存储器发出访问请求,并将所述 存储器返回的命令列表数据缓存在被分配的所述存储空间中。
[0012]于一实施例中,所述检查所述命令列表中最后一个条目存储的是否为 链接命令,包括:当所述预设缓存的所述写指针与对所述预设缓存的第一 读指针不同时,检查所述预设缓存中所述命令列表的每一个条目,直到找 到所述命令列表最后一条目时,判断所述命令列表最后一条目中存储的是 否为链接命令。
[0013]于一实施例中,所述检查所述命令列表中最后一个条目存储的是否为 链接命令,包括:当所述预设缓存的所述写指针与对所述预设缓存的第一 读指针不同时,读取所述预设缓存中的所述命令列表,根据所述命令列表 的长度信息计算所述命令列表的最后一个条目所在位置,判断所述最后一 个条目所在位置处的命令是否为链接命令。
[0014]于一实施例中,所述依次执行多个所述链表数据,包括:针对每个所 述链表数据,当所述预设缓存的所述写指针与对所述预设缓存的第二读指 针不同时,对所述预设缓存中的待处理命令进行解码,并执行解码后的所 述待处理命令,释放所述待处理命令在所述预设缓存的对应资源。
[0015]于一实施例中,所述在一个所述链表数据执行完毕后,释放已执行完 毕的所述链表数据在所述命令提交队列中对应的容纳空间,包括:针对每 个所述链表数据,当解码出的所述待处理命令为结束命令时,在当前链表 数据中所有命令执行完成后,释放对应的链表读取请求在所述命令提交队 列中对应的容纳空间。
[0016]本申请实施例第二方面提供了一种命令链表处理装置,包括:接收模 块,用于接收来自主机的多个链表读请求至预设的命令提交队列中,其中, 所述命令提交队列被配置
有预设数量的容纳空间,所述预设数量的容纳空 间用于缓存所述多个链表读请求;第一处理模块,用于根据每个所述链表 读请求的接收次序,依次从存储器中读取每个所述链表读请求对应的链表 数据,并依次执行多个所述链表数据,所述链表数据包括:至少一个命令 列表;第二处理模块,用于在一个所述链表数据执行完毕后,释放已执行 完毕的所述链表数据在所述命令提交队列中对应的容纳空间,以从所述主 机接收下一个链表读请求。
[0017]于一实施例中,所述接收模块用于:当检测到来本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种命令链表处理方法,其特征在于,包括:接收来自主机的多个链表读请求至预设的命令提交队列中,其中,所述命令提交队列被配置有预设数量的容纳空间,所述预设数量的容纳空间用于缓存所述多个链表读请求;根据每个所述链表读请求的接收次序,依次从存储器中读取每个所述链表读请求对应的链表数据,并依次执行多个所述链表数据,所述链表数据包括至少一个命令列表;在一个所述链表数据执行完毕后,释放已执行完毕的所述链表数据在所述命令提交队列中对应的容纳空间,以从所述主机接收下一个链表读请求。2.根据权利要求1所述的方法,其特征在于,所述接收来自主机的多个链表读请求至预设的命令提交队列中,包括:当检测到来自主机的一个所述链表读请求时,若所述命令提交队列中现有的所述链表读请求数量小于所述预设数量,则接收当前的所述链表读请求至所述命令提交队列中。3.根据权利要求1所述的方法,其特征在于,所述根据每个所述链表读请求的接收次序,依次从存储器中读取每个所述链表读请求对应的链表数据,包括:针对每个所述链表读请求,当检测到所述命令提交队列的命令读请求时,根据所述命令读请求从指定的存储器中获取待处理的命令列表,其中所述命令列表为链表结构,所述命令列表中包括多个条目,每个所述条目中存储有待处理的命令;检查所述命令列表中最后一个条目存储的是否为链接命令;若所述命令列表中最后一个条目存储的是链接命令,根据所述链接命令从指定的存储器中获取新的命令列表。4.根据权利要求3所述的方法,其特征在于,所述当检测到所述命令提交队列的命令读请求时,根据所述命令读请求从指定的存储器中获取待处理的命令列表,包括:当检测到所述命令提交队列的命令读请求时,响应于所述命令读请求,从所述命令提交队列中解析出所述待处理的命令列表对应的存储地址和长度信息;根据所述存储地址和所述长度信息,向指定的存储器发出访问请求,并缓存所述存储器返回的命令列表数据至预设缓存,更新所述预设缓存的写指针。5.根据权利要求4所述的方法,其特征在于,所述根据所述存储地址和所述长度信息,向指定的存储器发出访问请求,并缓存所述存储器返回的命令列表数据至预设缓存,包括:根据所述长度信息,为所述命令读请求从所述预设缓存中分配对应的存储空间;根据所述存储地址向指定的存储器发出访问请求,并将所述存储器返回的命令列表数据缓存在被分配的所述存储空间中。6.根据权利要求4所述的方法,其特征在于,所述检查所述命令列表中最后一个条目存储的是否为链接命令,包括:当所述预设缓存的所述写指针与对所述预设缓存的第一读指针不同时,检查所述预设缓存中所述命令列表的每一个条目,直到找到所述命令列表最后一条目时,判断所述命令列表最后一条目中存储的是否为链接命令。7.根据权利要求4所述的方法,其特征在于,所述检查所述命令列表中最后一个条目存储的是否为链接命令,包括:当所述预设缓存的所述写指针与对所述预设缓存的第一读指针不同时,读取所述预设缓存中的所述命令列表,根据所述命令列表的长度信息计算所述命令列表的最后一个条目
所在位置,判断所述最后一个条目所在位置处的命令是否为链接命令。8...

【专利技术属性】
技术研发人员:马亮
申请(专利权)人:上海登临科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1