缓冲资源的分配方法和装置的制造方法
【技术领域】
[0001]本发明实施例涉及计算机技术,尤其涉及一种缓冲资源的分配方法和装置。
【背景技术】
[0002]随着超大规模集成电路(Very Large Scale Integrat1n,简称:VLSI)和半导体制造工艺的不断发展,为了减小VLSI芯片的功耗,缩小VLSI芯片的面积,提出将ARM的第三代数据总线协议(Advanced extensible Interface,简称:AXI)总线到ARM的一致性总线协议的转换,以将读通道和写通道处理单元融合,来缩小芯片面积,而现在的多核处理器的体系结构中较多模块还是AXI协议接口,因此需要设置转接桥模块将AXI协议接口转换为一致性总线协议接口。
[0003]图1为AXI协议接口转换为一致性总线协议接口的转接桥模块的示意图,如图1所示,现有的从上图可以看出,读地址通道AR、读数据通道RD、写地址通道AW、写数据通道WD以及响应通道B都分别设置有独立的缓冲区,每个缓冲区用于对应的通道的预处理和暂存,以写数据的过程为例,其具体实现过程为:写地址通道的写命令有效,若写地址通道对应的缓冲区有空闲空间,则接收该写命令,并将该写命令发送至仲裁模块,至该写命令被仲裁出时,发送至协议转换模块完成AXI协议至一致性协议的转换,同时根据被仲裁的写命令信息从对应的写数据通道中取数据,并缓存在写数据通道的缓冲区,直到该写命令对应的所有数据接收完成,则将所有数据发送到一致性协议总线。如果AW对应的缓冲区为非空时,则不能接受发送的新的写命令,而是选择该AW缓冲区中未处理的时间最久的写命令发送至仲裁模块进行后续处理,直至该AW缓冲区空闲,才能进行前述接收写命令,实现后续过程。现有技术对于读命令以及读数据的处理方式与写类似。
[0004]然而,现有的转接桥模块中,例如当写通道流量大,读通道流量小时,该方案的写通道缓冲区的资源紧张,而读通道缓冲区有很多空闲资源,造成在读和写流量不均衡的场景下,缓冲区资源浪费,利用率较低。
【发明内容】
[0005]本发明提供一种缓冲资源的分配方法和装置,用于在读和写流量不均衡的场景下,减小缓冲器资源浪费,提高资源的利用率。
[0006]本发明第一方面提供一种缓冲资源的分配方法,应用于缓冲资源分配装置,所述装置包括命令缓冲器和数据缓冲器;所述方法包括:
[0007]接收从第一总线发来的第一命令,并检测所述命令缓冲器中是否存在空闲的缓冲空间;其中,所述第一总线为ARM的第三代数据总线,所述第一命令包括读命令或写命令;
[0008]当所述命令缓冲器中存在空闲的缓冲空间,则在所述命令缓冲器中为所述第一命令分配第一缓冲空间,并将所述第一命令缓存在分配的所述第一缓冲空间;
[0009]根据预设的仲裁策略从所述命令缓冲器缓存的所述第一命令中选择目标命令,对所述目标命令进行协议转换,并将转换后的目标命令发送至第二总线,所述第二总线为ARM的第五代数据总线。
[0010]结合第一方面,在第一方面的第一种可能的实施方式中,所述方法还包括:
[0011]当所述命令缓冲器中不存在空闲的缓冲空间时,则反压所述第一命令。
[0012]结合第一方面的第一种可能的实施方式,在第一方面的第二种可能的实施方式中,所述方法还包括:
[0013]检测所述第一命令的反压时间是否超过预设阈值;
[0014]当检测到所述第一命令的反压时间超过所述预设阈值时,屏蔽从所述第一总线发来的其他命令,并实时检测所述命令缓冲器中是否存在空闲的缓冲空间,直至为所述第一命令分配到第一缓冲空间后,解除对所述第一总线发来的其他命令的屏蔽。
[0015]结合第一方面、第一方面的第一种或第二种可能的实施方式,在第一方面的第三种可能的实施方式中,所述当根据仲裁策略从所述命令缓冲器中选择出的目标命令之后,还包括:
[0016]若所述目标命令为写命令,则在所述数据缓冲器中为所述目标命令对应的数据预分配第二缓冲空间;
[0017]当接收到所述目标命令对应的数据,则将所述目标命令对应的数据缓存在所述第二缓冲空间,直至所述目标命令对应的数据全部接收完成,则将所述目标命令对应的全部数据发送至所述第二总线,并清空所述第二缓冲空间。
[0018]结合第一方面、第一方面的第一种至第三种中的任一种可能的实施方式,在第一方面的第四种可能的实施方式中,若所述目标命令为读命令,且所述目标命令不是重发命令,则所述将转换后的目标命令发送至第二总线之后,还包括:
[0019]接收所述第二总线返回的与所述目标命令对应的数据;
[0020]检测所述数据缓冲器是否存在空闲的缓冲空间;
[0021 ] 若所述数据缓冲器存在空闲空间,则在所述数据缓冲器中为所述目标命令对应的数据分配第三缓冲空间,并将所述目标命令对应的数据缓存在所述第三缓冲空间,直至所述目标命令对应的数据被读取完成后,清空所述第三缓冲空间。
[0022]结合第一方面的第四种可能的实施方式,在第一方面的第五种可能的实施方式中,还包括:
[0023]若所述数据缓冲器不存在空闲空间,则将所述目标命令对应的数据丢弃,并向所述命令缓冲器重发所述读命令。
[0024]结合第一方面、第一方面的第一种至第三种中的任一种可能的实施方式,在第一方面的第六种可能的实施方式中,若所述目标命令为读命令,且所述目标命令是重发命令,则所述对所述目标命令协议转换之后,还包括:
[0025]实时检测所述数据缓冲器是否存在空间的缓冲空间,在所述数据缓冲器中为所述目标命令对应的数据预分配第四缓冲空间;
[0026]接收所述第二总线返回的与所述目标命令对应的数据,并将所述目标命令对应的数据缓存在所述第四缓冲空间,直至所述目标命令对应的数据被读取完成后,清空所述第四缓冲空间。
[0027]本发明第二方面提供一种缓冲资源的分配装置,包括:第一接收通道,命令缓冲管理模块,命令缓冲器,仲裁模块和协议转换模块;所述命令缓冲管理模块,用于通过所述第一接收通道,接收从第一总线发送的第一命令,并检测所述命令缓冲器中是否存在空闲的缓冲空间,当所述命令缓冲器中存在空闲的缓冲空间,则在所述命令缓冲器中为所述第一命令分配第一缓冲空间,并将所述第一命令缓存在所述第一缓冲空间,其中,所述第一总线为ARM的第三代数据总线,所述所述第一命令包括读命令或写命令;
[0028]所述仲裁模块用于根据预设的仲裁策略从所述命令缓冲器缓存的所述第一命令中选择目标命令;
[0029]所述协议转换模块用于将所述目标命令进行协议转换,并将转换后的目标命令发送至第二总线,所述第二总线为ARM的第五代数据总线。
[0030]结合第二方面,在第二方面的第一种可能的实施方式中,所述命令缓冲管理模块还用于,当所述命令缓冲器中不存在空闲的缓冲空间时,则反压所述第一命令。
[0031]结合第二方面的第一种可能的实施方式,在第二方面的第二种可能的实施方式中,还包括:检测模块,用于检测所述第一命令的反压时间是否超过预设阈值;
[0032]所述命令缓冲管理模块还用于当所述检测模块检测到所述第一命令的反压时间超过所述预设阈值时,屏蔽从所述第一总线发来的其他命令,并实时检测所述命令缓冲器中是否存在空闲的缓冲空间,直至为所述第一命令分配到第一缓冲空间后,解除对所述第一总线发来的其他命令的屏蔽。
[0033]结合第二方面、第二方面的第一种或第二种可能的实施方式,在第二方面的第三种可能的实施方式中,若所述仲裁模块根据仲裁策略从所述命令缓冲器中选择出的所述目标命令为写命令,则所述装置还包括:第一发送通道、数据缓冲器和数据缓冲管理模块,所述数据缓冲管理模块用于在数据缓冲器为所述写命令对应的数据预分配第二缓冲空间;
[0034]所述数据缓冲器还用于通过所述第一接收通道接收所述目标命令对应的数据;
[0035]所述数据缓冲管理模块还用于将所述目标命令对应的数据缓存在所述第二缓冲空间;
[0036]所述数据缓冲管理模块还用于在所述目标命令对应的数据全部接收完成后,通过所述第一发送通道将所述目标命令对应的全部数据发送至所述第二总线;
[0037]所述数据缓冲管理模块还用于清空第二缓冲空间。
[0038]结合第二方面的第三种可能的实施方式,在第二方面的第四种可能的实施方式中,若所述仲裁模块仲裁出的目标命令为读命令,且所述目标命令不是重发命令,则所述装置还包括:第二接收通道,所述数据缓冲管理模块还用于通过所述第二接收通道接收所述第二总线返回的与所述读命令对应的数据;
[0039]则所述数据缓冲管理模块具体用于:
[0040]检测数据缓冲器是否存在空闲的缓冲空间;若所述数据缓冲器存在空闲空间,则在所述数据缓冲器中为所述目标命令对应的数据分配第三缓冲空间,并将所述目标命令对应的数据缓存在所述第三缓冲空间,直至所述目标命令对应的数据被读取完成后,清空所述第二缓冲空间。
[0041]结合第二方面的第四种可能的实施方式,在第二方面的第五种可能的实施方式中,所述数据缓冲管理模块还具体用于:若所述数据缓冲器不存在空闲空间,则将所述目标命令对应的数据丢弃,并指示所述命令缓冲管理模块向所述命令缓冲器重发所述目标命令。
[0042]结合第二方面的第五种可能的实施方式,在第二方面的第六种可能的实施方式中,若所述仲裁模块仲裁出的目标命令为读命令,且所述目标命令是重发命令,则所述数据缓冲管理模块还具体用于:实时检测所述数据缓冲器是否存在空间的缓冲空间,在所述数据缓冲器中为所述目标命令对应的数据预分配第四缓冲空间;
[0043]所述数据缓冲器还用于通过所述第二接收通道接收所述第二总线返回的与所述目标命令对应的数据;
[0044]所述