用于路由器的缓存分配方法、片上网络及电子设备

文档序号:856854 发布日期:2021-04-02 浏览:1次 >En<

阅读说明:本技术 用于路由器的缓存分配方法、片上网络及电子设备 (Cache allocation method for router, network on chip and electronic equipment ) 是由 杨平 于 2020-12-28 设计创作,主要内容包括:一种用于路由器的缓存分配方法、片上网络及电子设备,该缓存分配方法包括:确定多个接收端口中的有效活动端口;响应于全局共享池中的缓存单元的数量小于有效活动端口的数量且多个接收端口中存在至少一个空闲端口,回收至少一个空闲端口的缓存单元,并将回收的缓存单元加入全局共享池。多个缓存单元中可进行分配的缓存单元组成全局共享池,全局共享池中的缓存单元用于被分配给有效活动端口,空闲端口为多个接收端口中除了有效活动端口之外的接收端口。该缓存分配方法可以在更细的粒度上动态调节缓存的分配,可以提高共享缓存的利用率,至少一些实施例提供的缓存分配方法还可以实现端口优先级的动态调整,以基于端口优先级进行缓存分配。(A cache allocation method, a network on chip and an electronic device for a router are provided, the cache allocation method includes: determining a valid active port of a plurality of receive ports; and in response to that the number of the cache units in the global shared pool is smaller than the number of the effective active ports and at least one idle port exists in the plurality of receiving ports, recovering the cache unit of the at least one idle port and adding the recovered cache unit into the global shared pool. The buffer units which can be allocated in the plurality of buffer units form a global shared pool, the buffer units in the global shared pool are used for being allocated to the effective active ports, and the idle ports are the receiving ports except the effective active ports in the plurality of receiving ports. The cache allocation method may dynamically adjust allocation of the cache at a finer granularity, may improve utilization of the shared cache, and the cache allocation method provided in at least some embodiments may also implement dynamic adjustment of the port priority to perform cache allocation based on the port priority.)

用于路由器的缓存分配方法、片上网络及电子设备

技术领域

本公开的实施例涉及一种用于路由器的缓存分配方法、片上网络及电子设备。

背景技术

随着处理器芯片核数的不断增多,片上系统(System on Chip,SoC)呈现出多核到众核的发展趋势,处理器也对通信带宽及系统的可扩展性提出了更为苛刻的要求。在众核系统中,全局互连可能导致严重的片上同步出错、不可预知的通信时延以及巨大的功耗开销。片上网络(Network-on-Chip,NoC)是一种新的SoC通信架构,是多核技术的主要组成部分,可以实现芯片各模块之间通信功能,替代了传统的总线或点到点互连的方式。NoC具有显著优于传统总线式系统的性能,基于NoC的系统能更好地适应在未来复杂多核SoC设计中使用的全局异步局部同步的时钟机制,因此NoC得到越来越广泛的应用。

发明内容

本公开至少一个实施例提供一种用于路由器的缓存分配方法,其中,所述路由器包括多个接收端口和多个缓存单元,所述方法包括:确定所述多个接收端口中的有效活动端口;响应于全局共享池中的缓存单元的数量小于所述有效活动端口的数量且所述多个接收端口中存在至少一个空闲端口,回收所述至少一个空闲端口的缓存单元,并将回收的缓存单元加入所述全局共享池;其中,所述多个缓存单元中可进行分配的缓存单元组成所述全局共享池,所述全局共享池中的缓存单元用于被分配给所述有效活动端口,所述空闲端口为所述多个接收端口中除了所述有效活动端口之外的接收端口。

例如,在本公开一实施例提供的方法中,所述有效活动端口为当前时刻在传输数据的接收端口,和/或当前时刻未传输数据、对应的上级路由器中存在对应的数据、且对应的缓存单元的数量小于最大预设值的接收端口,所述上级路由器配置为向所述路由器发送数据。

例如,在本公开一实施例提供的方法中,回收所述至少一个空闲端口的缓存单元,并将回收的缓存单元加入所述全局共享池,包括:基于所述有效活动端口的数量,确定缓存回收预算;根据所述至少一个空闲端口的回收权重值,将所述缓存回收预算分配给所述至少一个空闲端口,以得到所述至少一个空闲端口中各空闲端口的预算值;基于所述预算值,向所述至少一个空闲端口中各空闲端口所连接的上级路由器发送回收请求,其中,所述回收请求携带对应的空闲端口的预算值;响应于接收到各空闲端口所连接的上级路由器发送的令牌回收信号,根据所述预算值回收各空闲端口的缓存单元,并将回收的缓存单元加入所述全局共享池。

例如,在本公开一实施例提供的方法中,所述回收权重值基于各空闲端口的缓存单元的数量确定,所述回收权重值与对应的空闲端口的缓存单元的数量正相关。

例如,在本公开一实施例提供的方法中,所述缓存回收预算等于所述有效活动端口的数量,或者等于所述有效活动端口的数量与所述全局共享池中的缓存单元的数量的差值。

例如,在本公开一实施例提供的方法中,确定所述多个接收端口中的所述有效活动端口包括:将所述当前时刻未传输数据且对应的上级路由器中存在对应的数据的接收端口确定为备选接收端口;将对应的缓存单元的数量小于所述最大预设值的备选接收端口确定为所述有效活动端口;将所述当前时刻在传输数据的接收端口确定为所述有效活动端口。

例如,本公开一实施例提供的方法还包括:根据所述有效活动端口的优先级,将所述全局共享池中的缓存单元分配给所述有效活动端口。

例如,在本公开一实施例提供的方法中,根据所述有效活动端口的优先级,将所述全局共享池中的缓存单元分配给所述有效活动端口,包括:接收所述多个接收端口中各接收端口所连接的上级路由器发送的缓存拥塞状态信号,其中,所述缓存拥塞状态信号指示对应的上级路由器中缓存的拥塞状态;根据所述缓存拥塞状态信号确定所述有效活动端口的优先级;根据优先级逐渐降低的顺序,将所述全局共享池中的缓存单元分配给所述有效活动端口。

例如,在本公开一实施例提供的方法中,所述缓存拥塞状态信号指示多个拥塞状态,所述多个拥塞状态表示不同的拥塞程度,所述多个拥塞状态基于所述上级路由器中存储的数据中与该上级路由器对应的接收端口所对应的数据所占用的缓存单元的数量确定。

例如,在本公开一实施例提供的方法中,所述多个接收端口至少包括第一接收端口和第二接收端口,所述第一接收端口所连接的上级路由器中存储的数据中与所述第一接收端口对应的数据所占用的缓存单元的数量大于所述第二接收端口所连接的上级路由器中存储的数据中与所述第二接收端口对应的数据所占用的缓存单元的数量,或者,所述第一接收端口所连接的上级路由器中存储的数据中与所述第一接收端口对应的数据所占用的缓存单元的数量占该上级路由器中存储的数据所占用的缓存单元的数量的百分比大于所述第二接收端口所连接的上级路由器中存储的数据中与所述第二接收端口对应的数据所占用的缓存单元的数量占该上级路由器中存储的数据所占用的缓存单元的数量的百分比;所述多个拥塞状态至少包括第一状态和第二状态,所述第一接收端口对应的缓存拥塞状态信号指示所述第一状态,所述第二接收端口对应的缓存拥塞状态信号指示所述第二状态,所述第一状态的拥塞程度高于所述第二状态的拥塞程度。

例如,在本公开一实施例提供的方法中,所述优先级至少包括第一优先级和第二优先级,所述第一接收端口为所述第一优先级,所述第二接收端口为所述第二优先级,所述第一优先级高于所述第二优先级。

例如,在本公开一实施例提供的方法中,得到分配的有效活动端口所分配得到的缓存单元的数量为1。

例如,本公开一实施例提供的方法还包括:将所述有效活动端口所释放的缓存单元加入所述全局共享池。

例如,本公开一实施例提供的方法还包括:响应于所述全局共享池中的缓存单元的数量大于或等于所述有效活动端口的数量,对每个有效活动端口分配至少一个所述全局共享池中的缓存单元。

例如,本公开一实施例提供的方法还包括:在初始化阶段,对所述多个接收端口分配所述多个缓存单元,以完成初始化。

本公开至少一个实施例还提供一种片上网络,包括多个路由器,其中,所述多个路由器包括接收路由器和至少一个发送路由器,所述接收路由器配置为接收来自所述至少一个发送路由器传输的数据,所述接收路由器通过数据及命令传输总线和双向控制通道与每个发送路由器连接,所述数据及命令传输总线配置为将所述数据从所述发送路由器传输至所述接收路由器,所述双向控制通道配置为在所述接收路由器和所述发送路由器之间双向传输控制信号,所述接收路由器包括缓存分配控制器、多个接收端口和多个缓存单元,每个接收端口与一个发送路由器连接,所述缓存分配控制器配置为:确定所述多个接收端口中的有效活动端口;响应于全局共享池中的缓存单元的数量小于所述有效活动端口的数量且所述多个接收端口中存在至少一个空闲端口,回收所述至少一个空闲端口的缓存单元,并将回收的缓存单元加入所述全局共享池;其中,所述多个缓存单元中可进行分配的缓存单元组成所述全局共享池,所述全局共享池中的缓存单元用于被分配给所述有效活动端口,所述空闲端口为所述多个接收端口中除了所述有效活动端口之外的接收端口。

例如,在本公开一实施例提供的片上网络中,所述有效活动端口为当前时刻在传输数据的接收端口,和/或当前时刻未传输数据、对应连接的发送路由器中存在对应的数据、且对应的缓存单元的数量小于最大预设值的接收端口。

例如,在本公开一实施例提供的片上网络中,所述双向控制通道为边带旁路控制通道,或者,所述数据及命令传输总线复用为所述双向控制通道。

例如,在本公开一实施例提供的片上网络中,在所述双向控制通道为所述边带旁路控制通道的情形,所述边带旁路控制通道包括第一通道、第二通道和第三通道,所述第一通道配置为将所述发送寄存器产生的缓存拥塞状态信号传输至所述接收寄存器,所述缓存拥塞状态信号指示对应的发送路由器中缓存的拥塞状态,所述第二通道配置为将所述缓存分配控制器产生的回收请求发送至所述发送寄存器,所述回收请求携带对应的空闲端口的预算值,所述预算值基于缓存回收预算得到,所述第三通道配置为将所述发送寄存器产生的令牌回收信号传输至所述接收寄存器,以用于根据所述预算值回收所述空闲端口的缓存单元并将回收的缓存单元加入所述全局共享池。

例如,在本公开一实施例提供的片上网络中,所述接收路由器还包括缓存分配仲裁器,所述缓存分配仲裁器配置为根据所述有效活动端口的优先级,将所述全局共享池中的缓存单元分配给所述有效活动端口。

本公开至少一个实施例还提供一种片上网络,配置为实现如本公开任一实施例所述的用于路由器的缓存分配方法。

本公开至少一个实施例还提供一种电子设备,包括如本公开任一实施例所述的片上网络。

附图说明

为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。

图1为一种片上网络中路由器的拓扑结构示意图;

图2为一种路由器缓存动态分配方案示意图;

图3为一种片上网络中路由器数据交互示意图;

图4为本公开一些实施例提供的一种片上网络的结构示意图;

图5为本公开一些实施例提供的一种用于路由器的缓存分配方法的流程示意图;

图6为图5所示的方法中步骤S10的流程示意图;

图7为图5所示的方法中步骤S20的流程示意图;

图8为本公开一些实施例提供的另一种用于路由器的缓存分配方法的流程示意图;

图9为图8所示的方法中步骤S30的流程示意图;

图10为本公开一些实施例提供的另一种用于路由器的缓存分配方法的流程示意图;

图11为图10所示的方法中步骤S40的流程示意图;

图12为本公开一些实施例提供的另一种用于路由器的缓存分配方法的流程示意图;

图13为本公开一些实施例提供的一种片上网络的结构示意图;

图14为本公开一些实施例提供的另一种片上网络的示意框图;以及

图15为本公开一些实施例提供的一种电子设备的示意框图。

具体实施方式

为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。

除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。同样,“一个”、“一”或者“该”等类似词语也不表示数量限制,而是表示存在至少一个。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。

对于片上网络(NoC),一种狭义的定义可以理解为用于实现芯片各模块之间通信功能的网络架构,该NoC由路由节点、通信链路和网络接口(Network Interface,NI)组成。另一种广义的定义可以理解为,NoC为单芯片上基于网络通信的整个多处理器系统,该NoC包括处理单元(PE)和通信网络。处理单元实现广义的计算功能,可以为微处理器核,也可以为存储单元或其它功能部件;通信网络即狭义的NoC,负责各处理单元之间的互连。

在NoC路由节点(也可称为路由器)中,缓存(Buffer)可用来暂存因多个输入端口输入的数据竞争同一个输出端口而不能立即转发的输入端口的数据,但缓存的设置也会带来一些问题。例如,缓存会产生较大的功耗,包括闲置时的静态功耗和进行读/写时的动态功耗;缓存会占据大量的芯片面积;相应的控制逻辑使系统设计的复杂度大幅增加;可使系统工作频率下降50%左右。因此,在路由节点设计中必须对缓存配额进行严格地限制,并且由于不同缓存分配策略对缓存资源的利用效率不同,导致系统的网络延迟与吞吐性能不同,所以还需对有限的缓存资源进行合理分配。

由于NoC大多是针对特定应用设计的,网络的通信量并不是理想的均匀模式,路由节点在每个方向上的负载是不均衡的。因此,为了控制NoC中路由节点的缓存开销,并在严格的开销限制下为系统提供良好的网络延迟与吞吐性能保障,有必要对NoC中路由节点的缓存分配技术进行研究。

按照缓存分配执行阶段的不同,可将缓存分配划分为静态分配和动态分配。静态分配是指在NoC系统运行的初始化阶段确定缓存的配置方案,动态分配是在NoC系统运行阶段实时地对缓存资源进行配置。这两种缓存分配方式是从不同角度对缓存资源进行分配,适用于不同的应用场景。

当前NoC系统内各模块的连接与数据传输主要是由路由器(Router)通过各种拓扑结构实现连接,其主要构成如图1所示。参考图1,主设备1A、主设备1B连接在路由器1上,而主设备2A连接在路由器2上。在实际的NoC系统中,这些主设备可以是中央处理器核(CPUcore)、直接内存访问模块(DMA)、特殊算法模块等,主设备负责发起读写操作请求。从设备1A、从设备1B连接在路由器1上,从设备2A、从设备2B连接在路由器2上。这些从设备可以是知识产权核(IP),例如IO接口IP、显示单元IP等,也可以是DDR等存储设备。路由器1与路由器2之间也有单独的端口连接,以实现主设备1A、主设备1B访问从设备2A和从设备2B。

路由器(路由器1或路由器2)将根据主设备发出的读写请求中的地址信息或者从设备的ID信息,通过计算或者查找表的方式确定读写请求的输出端口以确保该读写请求到达访问的从设备。从设备接收到读写请求并完成相应的操作后,再将应答的数据和状态信息通过路由器返回给发起该读写请求的主设备。返回的路由路径可以是原路返回,也可以根据系统实际应用需求选择其他路由路径返回。

关于缓存动态分配,当前的缓存动态分配方案主要采用两方面的技术来实现动态分配。一是将缓存划分为3种类型,分别是端口虚拟通道(Virtual Channel,VC)专用缓存、端口共享缓存(Port Share Buffer,PSB)和全局共享缓存(Global Share Buffer,GSB)。二是采用端口带宽比例分配和优先级仲裁的方式,通过对不同端口分配不同缓存数量来实现带宽的动态分配。

图2为一种路由器缓存动态分配方案示意图。如图2所示,路由器5中的所有缓存资源是统一集中管理的,通过多个寄存器组和控制逻辑,将缓存资源分配给所有的输入端口,从而实现缓存动态分配。虚拟通道(VC)专用缓存作为通路最低带宽保证,以避免某一类传输数据或者传输请求将输入端口资源耗尽而造成死锁(deadlock)。端口共享缓存(PSB)则可以进一步提升各端口内各VC通道的传输带宽,提高各VC通道间的带宽分配灵活性。全局共享缓存(GSB)则能够让端口间的带宽分配更为灵活,可实现对各端口间的带宽分配进行动态调整。

例如,在该示例中,路由器5包括三个端口,分别为端口5A、端口5B和端口5C。每个端口具有多个VC通道,每个VC通道都有相应的VC专用缓存。每个端口具有端口共享缓存(PSB),这些端口共享缓存可以被动态分配给各VC端口。该路由器5中还有全局共享缓存(GSB),全局共享缓存可以被动态分配给各个端口,以作为各个端口的端口共享缓存。例如,路由器5还包括缓存仲裁分配器BAA5和路由仲裁转换器RAS5。缓存仲裁分配器BAA5用于对各个端口进行仲裁,并基于仲裁结果进行缓存分配。路由仲裁转换器RAS5用于对端口之间的转换进行仲裁,并基于仲裁结果确定数据传输端口。

关于缓存分配信息传递,主要采用计数器的方式来更新缓存分配信息。例如,对于由一个发送寄存器和一个接收寄存器所组成的单一的传输路径而言,采用配置寄存器设置接收路由器各端口的缓存分配值后,在初始化阶段,通过边带旁路信号将该分配值传递给与该端口相连的发送路由器的输出端口。发送路由器内部针对每个输出端口配置有一个可增可减的计数器,以实现实时更新对应的接收路由器该端口可用的缓存数量。这种基于令牌的缓存机制,有利于发送路由器进行流控,避免传输的数据丢失和溢出。

图3为一种片上网络中路由器数据交互示意图。需要说明的是,在实际的NoC系统中,路由器之间都是双向传输通道,各自都同时扮演发送者和接收者的角色,为避免表述混淆,图3仅示出了单个传输通道,路由器3作为发送者(也即发送路由器),路由器4作为接收者(也即接收路由器)。下文以单个传输通道为例,结合图3对路由器之间的交互进行说明。

例如,如图3所示,路由器3作为发送路由器,路由器4作为接收路由器,路由器3的端口3A与路由器4的端口4A彼此连接以传输数据。路由器3的端口3B和端口3C以及路由器4的端口4B还与其他路由器连接,在图3中不再详细示出。

在进行数据传输之前,在初始化时,路由器4会将其分配给端口4A的缓存类型以及数量作为初始值赋给释放计数器4A。释放计数器4A通过图3中的黑色实心线所示意的边带旁路信号将其数值传输给路由器3中的接收计数器3A。例如,可以通过脉冲信号或其他任意类型的信号来传输该数值。例如,每传输数值1,释放计数器4A将递减1,接收计数器3A将递增1。只要释放计数器4A中的数值不为0,则释放计数器4A会继续向接收路由器3A传输数值,一直到释放计数器4A递减到0为止。当释放计数器4A递减到0后,释放计数器4A中的数据被传递给路由器3中的接收计数器3A,接收计数器3A的数值等于释放计数器4A的初始值。

例如,在一些示例中,释放计数器4A中的初始值为20,也即,路由器4为端口4A分配了20个端口共享缓存。接着,释放计数器4A通过边带旁路信号将其数值传递给接收计数器3A。每传递数值1,释放计数器4A递减1,接收计数器3A递增1,直到释放计数器4A的数值变为0,此时,接收计数器3A的数值达到20。由此,接收计数器3A中成功记录了路由器4的端口4A可利用的缓存数量。

初始化完成后,路由器3和路由器4进入正常工作阶段。在正常工作阶段,路由器3每向路由器4发出一个传输请求(或者传输一个数据包),则接收计数器3A将自动减1。路由器4在将该传输请求转发出去后,将释放出一个相应的缓存,该释放的缓存将会再次通过边带旁路信号传递给路由器3中的接收计数器3A,使得接收计数器3A将再次递加1。

当路由器4未能将传输的数据或者请求转发出去而无法释放缓存时,且路由器3仍然不断向路由器4传输数据或者请求时,接收计数器3A的数值将不断递减。当接收计数器3A的数值递减为零时,路由器3将自动暂停向路由器4传输数据或者请求,以避免数据或者请求因溢出而丢失。

上述方式为基于令牌的缓存预分配,也即是,接收路由器(例如路由器4)会在发送路由器(例如路由器3)内一直预留有一定的缓存分配预算,这样可以保证传输的连续性。但是,当发送路由器的该输出端口(例如路由器3的端口3A)没有传输任务时,接收路由器中为相应端口预留的共享缓存(例如路由器4中为端口4A预留的端口共享缓存)就无法释放给接收路由器中其他输入端口使用,这将导致共享缓存的利用率较低,且无法实时动态地在细粒度上调节带宽分配,因此难以解决NoC网络上各路传输通路的传输负载流量在时间上和空间上的不均衡性,由此,会导致某一时间段内某些通路上出现传输拥塞,导致这些通路的传输带宽严重不足和传输延时急剧增大。

本公开至少一个实施例提供一种用于路由器的缓存分配方法、片上网络及电子设备。该缓存分配方法可以在更细的粒度上动态调节缓存的分配,可以提高共享缓存的利用率,提升活动端口的传输带宽,降低传输延时,提升片上网络的传输性能。至少一些实施例提供的缓存分配方法基于上一级发送路由器内的缓存拥塞状态调整当前接收路由器内各端口的优先级,可以实现端口优先级的动态调整,从而可以基于端口优先级进行缓存分配,进而提升传输性能。

下面,将参考附图详细地说明本公开的实施例。应当注意的是,不同的附图中相同的附图标记将用于指代已描述的相同的元件。

本公开至少一个实施例提供一种用于路由器的缓存分配方法。该路由器包括多个接收端口和多个缓存单元。该缓存分配方法包括:确定多个接收端口中的有效活动端口;响应于全局共享池中的缓存单元的数量小于有效活动端口的数量且多个接收端口中存在至少一个空闲端口,回收至少一个空闲端口的缓存单元,并将回收的缓存单元加入全局共享池。多个缓存单元中可进行分配的缓存单元组成全局共享池,全局共享池中的缓存单元用于被分配给有效活动端口,空闲端口为多个接收端口中除了有效活动端口之外的接收端口。

图4为本公开一些实施例提供的一种片上网络的结构示意图,本公开实施例提供的缓存分配方法例如用于该片上网络中的路由器。例如,如图4所示,该片上网络100包括多个路由器,多个路由器包括接收路由器(例如路由器7)和至少一个发送路由器(例如路由器6)。接收路由器配置为接收来自至少一个发送路由器传输的数据。

接收路由器通过数据及命令传输总线和双向控制通道与每个发送路由器连接。数据及命令传输总线配置为将数据从发送路由器传输至接收路由器。双向控制通道配置为在接收路由器和发送路由器之间双向传输控制信号。

例如,接收路由器包括缓存分配仲裁器110、缓存分配控制器120、多个接收端口(例如端口7A、7B和7C)和多个缓存单元。每个接收端口与一个发送路由器连接。例如,在图4所示的示例中,接收路由器的端口7A与发送路由器的端口6A连接,且两者通过数据及命令传输总线和双向控制通道连接。缓存单元例如为接收路由器中的Buffer,通常会在接收路由器中设置数十个、甚至上百个缓存单元。例如,每个缓存单元具有约500~600bit的存储空间。

双向控制通道例如包括第一通道ch1、第二通道ch2和第三通道ch3。第一通道ch1配置为将发送寄存器产生的缓存拥塞状态信号传输至接收寄存器,缓存拥塞状态信号指示对应的发送路由器中缓存的拥塞状态。第二通道ch2配置为将缓存分配控制器120产生的回收请求发送至发送寄存器。第三通道ch3配置为将发送寄存器产生的令牌回收信号传输至接收寄存器。例如,双向控制通道可以为边带旁路控制通道。当然,本公开的实施例不限于此,也可以将数据及命令传输总线复用为双向控制通道,或者采用其他任意适用的方式,只要能在发送路由器和接收路由器之间双向传输控制信号即可,本公开的实施例对此不作限制。例如,接收路由器和发送路由器之间还设置有用于传输令牌释放信号的边带旁路通道,以在正常工作时将释放计数器7A的数值传递给接收计数器6A。

需要说明的是,发送路由器的端口6B和端口6C以及接收路由器的端口7B和端口7C还与其他路由器连接,对于任意一个包括发送者和接收者的连接通道,其连接方式与发送路由器的端口6A和接收路由器的端口7A的连接方式类似,图4中不再详细示出。

需要说明的是,本公开的实施例中,发送路由器和接收路由器是相对于数据传输链路中各个路由器的角色来确定的。对于某一路由器,当该路由器发送数据时,其作为发送路由器,而当该路由器接收数据时,其又作为接收路由器。也即是,从传输方向的角度看,对于某一寄存器而言,相对于上级路由器,该寄存器作为接收路由器,而相对于下级路由器,该寄存器作为发送路由器。发送路由器和接收路由器的角色是可以相互转换的。为了表述简洁,图4中的发送路由器只示出了输出端口(也即发送端口),接收路由器只示出了输入端口(也即接收端口),且这两个路由器中的端口B和端口C的信号进行了简化,只对端口A进行了详细描述。在实际应用中,路由器既有输入端口也有输出端口。

需要说明的是,相比于通常的片上系统,本公开实施例提供的片上系统100中新增了缓存拥塞状态信号、回收请求、令牌回收信号以及缓存分配控制器120。缓存分配控制器120负责将所需回收的缓存数量分配到相关的空闲端口上,并向其上级路由器发出回收请求。缓存拥塞状态信号、回收请求、令牌回收信号主要用于发送路由器和接收路由器之间的令牌动态分配和回收管理。而在初始化和正常工作时,仍然使用令牌释放信号通道。

图5为本公开一些实施例提供的一种用于路由器的缓存分配方法的流程示意图,该缓存分配方法例如用于图4所示的片上网络100中的路由器。例如,在一些示例中,如图5所示,该缓存分配方法包括如下操作。

步骤S10:确定多个接收端口中的有效活动端口;

步骤S20:响应于全局共享池中的缓存单元的数量小于有效活动端口的数量且多个接收端口中存在至少一个空闲端口,回收至少一个空闲端口的缓存单元,并将回收的缓存单元加入全局共享池。

例如,多个缓存单元中可进行分配的缓存单元组成全局共享池,全局共享池中的缓存单元用于被分配给有效活动端口。空闲端口为多个接收端口中除了有效活动端口之外的接收端口。

下面结合图4所示的片上网络100对上述各个步骤进行示例性说明。

例如,在步骤S10中,在接收路由器的多个接收端口中确定有效活动端口。例如,接收路由器的端口7A、端口7B和端口7C均用于接收数据,因此均为接收端口,在端口7A、端口7B和端口7C中确定有效活动端口。当然,接收路由器还可以包括多个发送端口,发送端口在图4中未示出。

例如,有效活动端口可以为当前时刻在传输数据的接收端口。例如,如图4所示,若端口7A、7B和7C中存在正在传输数据的端口,则可以直接将正在传输数据的端口确定为有效活动端口。由于有效活动端口正在传输数据,因此接收路由器中为该端口分配的缓存单元必然被一定程度占用(传输的数据需要存储到该端口的缓存单元中),因此该端口对应的缓存单元的数量必然小于最大预设值。

例如,有效活动端口也可以为当前时刻未传输数据、对应的上级路由器中存在对应的数据、且对应的缓存单元的数量小于最大预设值的接收端口。例如,如图4所示,若端口7A、7B和7C中存在一些当前时刻没有传输数据的端口,假设端口7A当前时刻没有传输数据,但是端口7A对应的上级路由器(也即发送路由器,配置为向当前路由器发送数据)中存在对应的数据,也即是,发送路由器中有需要发送至端口7A的数据,而且,接收路由器中端口7A对应的缓存单元的数量小于最大预设值,则端口7A也被确定为有效活动端口。

例如,预设最大值为初始化阶段为各个接收端口设置的可分配的缓存单元的最大值,这可以由配置寄存器进行设置。各个端口的预设最大值可以相同,也可以不同,预设最大值的具体数值也可以为任意适用的数值,这可以根据实际设计需求而定,本公开的实施例对此不作限制。

图6为图5所示的方法中步骤S10的流程示意图。例如,在一些示例中,步骤S10可以进一步包括如下操作。

步骤S11:将当前时刻未传输数据且对应的上级路由器中存在对应的数据的接收端口确定为备选接收端口;

步骤S12:将对应的缓存单元的数量小于最大预设值的备选接收端口确定为有效活动端口;

步骤S13:将当前时刻在传输数据的接收端口确定为有效活动端口。

例如,在步骤S11中,将当前时刻未传输数据且对应的上级路由器中存在对应的数据的接收端口确定为备选接收端口。关于“对应的上级路由器中存在对应的数据”的含义已在上文中说明,此处不再赘述。备选接收端口的缓存单元的数量有可能小于最大预设值,也有可能等于最大预设值。因此需要对备选接收端口进行进一步判断。

例如,在步骤S12中,将对应的缓存单元的数量小于最大预设值的备选接收端口确定为有效活动端口。例如,若某些备选接收端口的缓存单元的数量等于最大预设值,则表示该备选接收端口的缓存单元的数量已达到上限,已不能再对其分配缓存单元了,因此需要将该备选接收端口剔除,使其不参与后续的缓存分配操作。

例如,在步骤S13中,将当前时刻在传输数据的接收端口确定为有效活动端口。由于有效活动端口正在传输数据,因此接收路由器中为该端口分配的缓存单元必然被一定程度占用,因此该端口对应的缓存单元的数量必然小于最大预设值。

需要说明的是,虽然图6中以一定顺序示出了步骤S11、S12和S13,但这并不表示这些步骤需要按照图6所示的顺序依序执行。例如,步骤S11和步骤S12可以顺序执行,步骤S13可以与步骤S11及步骤S12并行执行,也即是,可以同时对正在传输数据的接收端口和未传输数据的接收端口进行判断,由此可以加快处理效率。

例如,如图5所示,在步骤S20中,若全局共享池中的缓存单元的数量小于有效活动端口的数量且多个接收端口中存在至少一个空闲端口,则回收至少一个空闲端口的缓存单元,并将回收的缓存单元加入全局共享池。这里,接收路由器的多个缓存单元中可进行分配的缓存单元组成全局共享池,也即是,接收路由器的多个缓存单元中没有被占用的缓存单元组成全局共享池。全局共享池中的缓存单元用于被分配给有效活动端口(例如根据优先级分配,具体分配方式将在下文说明,此处不再赘述)。例如,空闲端口为多个接收端口中除了有效活动端口之外的接收端口,也即是,空闲端口在当前时刻并未传输数据,而且空闲端口对应的上级路由器(发送路由器)中不存在需要发送给该空闲端口的数据。

通过对空闲端口的缓存单元进行回收,可以避免空闲端口占用缓存资源。这里,回收的缓存单元为空闲端口的端口共享缓存(PSB)。回收后的缓存单元可以作为全局共享缓存(GSB)被分配给有效活动端口,从而可以在更细的粒度上动态调节缓存的分配,可以提高共享缓存的利用率,提升活动端口的传输带宽,降低传输延时,提升片上网络的传输性能。

图7为图5所示的方法中步骤S20的流程示意图。例如,在一些示例中,步骤S20可以进一步包括如下操作。

步骤S21:基于有效活动端口的数量,确定缓存回收预算;

步骤S22:根据至少一个空闲端口的回收权重值,将缓存回收预算分配给至少一个空闲端口,以得到至少一个空闲端口中各空闲端口的预算值;

步骤S23:基于预算值,向至少一个空闲端口中各空闲端口所连接的上级路由器发送回收请求,其中,回收请求携带对应的空闲端口的预算值;

步骤S24:响应于接收到各空闲端口所连接的上级路由器发送的令牌回收信号,根据预算值回收各空闲端口的缓存单元,并将回收的缓存单元加入全局共享池。

例如,在步骤S21中,基于有效活动端口的数量,确定缓存回收预算。

例如,在一些示例中,缓存回收预算等于有效活动端口的数量。例如,假设存在8个有效活动端口,则可以将缓存回收预算确定为8,也即是,需要从空闲端口的缓存单元中回收8个缓存单元。此时,无论全局共享池中存在多少缓存单元,都能确保回收缓存单元后可以为每个有效活动端口至少分配一个缓存单元。这种方式可以提高回收率,提高缓存单元的分配余量。

例如,在另一些示例中,缓存回收预算等于有效活动端口的数量与全局共享池中的缓存单元的数量的差值。例如,仍然假设存在8个有效活动端口,此时,全局共享池中的缓存单元为3个,则可以将缓存回收预算确定为5,也即是,需要从空闲端口的缓存单元中回收5个缓存单元。此时,全局共享池中的3个缓存单元和回收的5个缓存单元可以被分配给8个有效活动端口,使每个有效活动端口分配得到一个缓存单元。这种方式可以降低对空闲端口的潜在影响,避免在回收之后空闲端口突发大流量数据传输时缓存资源短缺。

需要说明的是,本公开的实施例中,确定缓存回收预算的方式不限于上文描述的两种方式,也可以采用其他任意适用的方式,例如按照有效活动端口数量的一定比例来确定,这可以根据实际需求而定,本公开的实施例对此不作限制。

例如,在步骤S22中,根据至少一个空闲端口的回收权重值,将缓存回收预算分配给至少一个空闲端口,以得到至少一个空闲端口中各空闲端口的预算值。如图4所示,假设接收寄存器中的端口7A和端口7B为空闲端口,端口7A和端口7B各自具有回收权重值,则根据端口7A和端口7B各自的回收权重值将缓存回收预算分配给端口7A和端口7B,从而得到端口7A和端口7B各自的预算值。例如,假设此时缓存回收预算为8,端口7A的回收权重值为0.5,端口7B的回收权重值也为0.5,则端口7A分配得到的预算值为4,端口7B分配得到的预算值也为4。也即是,需要从端口7A回收4个缓存单元,从端口7B回收4个缓存单元。又例如,假设此时缓存回收预算为8,端口7A的回收权重值为0.25,端口7B的回收权重值为0.75,则端口7A分配得到的预算值为2,端口7B分配得到的预算值也为6。也即是,需要从端口7A回收2个缓存单元,从端口7B回收6个缓存单元。

例如,回收权重值基于各空闲端口的缓存单元的数量确定,回收权重值与对应的空闲端口的缓存单元的数量正相关。也即是,若某一空闲端口的缓存单元的数量较多,则该空闲端口的回收权重值较大,从而使得该空闲端口的预算值较大,可以从该空闲端口回收较多的缓存单元;若某一空闲端口的缓存单元的数量较少,则该空闲端口的回收权重值较小,从而使得该空闲端口的预算值较小,可以从该空闲端口回收较少的缓存单元。通过设置回收权重值,可以有针对性地回收缓存单元,并且使回收之后各个空闲端口的缓存单元的数量基本均衡,从而保证各个空闲端口在回收之后突发数据传输时的带宽。

需要说明的是,本公开的实施例中,分配预算值的方式不限于上文描述的方式,也可以采用其他任意适用的方式,这可以根据实际需求而定,本公开的实施例对此不作限制。例如,在另一些示例中,也可以不设置回收权重值,而是均等地将缓存回收预算分配给各个空闲端口,由此可以简化缓存回收预算的分配方式。

例如,在步骤S23中,基于预算值,向各空闲端口所连接的上级路由器发送回收请求。例如,如图4所示,在接收路由器中,假设缓存分配控制器120确定端口7A(此时为空闲端口)的预算值为4,则会向端口7A所连接的上级路由器(发送路由器)发送回收请求,该回收请求例如通过第二通道ch2发送。例如,回收请求携带对应的空闲端口的预算值。当发送路由器接收到回收请求后,可以获知该预算值,从而使对应的接收计数器的数值减去该预算值。例如,假设发送路由器接收到来自接收路由器的端口7A的回收请求,该回收请求指示预算值为4,则接收计数器6A会在原有数值的基础上减去4。之后,发送路由器会向接收路由器发送令牌回收信号,以表示进行了相应回收。例如,可以通过第三通道ch3发送令牌回收信号。

例如,在步骤S24中,在接收到各空闲端口所连接的上级路由器发送的令牌回收信号后,根据预算值回收各空闲端口的缓存单元,并将回收的缓存单元加入全局共享池。例如,如图4所示,当接收路由器的端口7A接收到发送路由器发送的令牌回收信号后,则可以获知发送路由器中的接收计数器6A的数值已减去了与预算值相等的数值(例如为4),因此,可以从端口7A的缓存单元中拿出4个缓存单元放入全局共享池。由此,可以实现空闲端口的缓存单元的回收。

通过上述方式,可以实现空闲端口的缓存单元的回收,避免空闲端口占用缓存资源。回收的缓存单元为空闲端口的端口共享缓存(PSB),回收后的缓存单元可以作为全局共享缓存(GSB)被分配给有效活动端口。由此,可以在更细的粒度上动态调节缓存的分配,可以提高共享缓存的利用率,提升活动端口的传输带宽,降低传输延时,提升片上网络的传输性能。并且,在同等性能的情况下,由于共享缓存的利用率提升,可以有效降低寄存器中设置的缓存单元的数量,从而可以减小路由器的面积,降低路由器的功耗,提升路由器的工作频率,进而能降低芯片的生产成本和使用成本,降低芯片物理实现的难度,加速芯片时序收敛。

图8为本公开一些实施例提供的另一种用于路由器的缓存分配方法的流程示意图。在该实施例中,除了还进一步包括步骤S30,该实施例提供的缓存分配方法与图5所示的缓存分配方法基本相同,相关说明可参考前述内容,此处不再赘述。

例如,如图8所示,该缓存分配方法还进一步包括如下操作。

步骤S30:根据有效活动端口的优先级,将全局共享池中的缓存单元分配给有效活动端口。

图9为图8所示的方法中步骤S30的流程示意图。例如,在一些示例中,步骤S30可以进一步包括如下操作。

步骤S31:接收多个接收端口中各接收端口所连接的上级路由器发送的缓存拥塞状态信号,其中,缓存拥塞状态信号指示对应的上级路由器中缓存的拥塞状态;

步骤S32:根据缓存拥塞状态信号确定有效活动端口的优先级;

步骤S33:根据优先级逐渐降低的顺序,将全局共享池中的缓存单元分配给有效活动端口。

例如,在步骤S31中,接收多个接收端口中各接收端口所连接的上级路由器发送的缓存拥塞状态信号,缓存拥塞状态信号指示对应的上级路由器中缓存的拥塞状态。例如,如图4所示,以接收路由器的端口7A为例,接收路由器接收与端口7A连接的上级路由器(发送路由器)发送的缓存拥塞状态信号,该缓存拥塞状态信号指示与端口7A对应的发送路由器中缓存的拥塞状态。该缓存拥塞状态信号例如通过第一通道ch1传输。

例如,缓存拥塞状态信号指示多个拥塞状态,多个拥塞状态表示不同的拥塞程度。例如,在一些示例中,缓存拥塞状态信号可以指示低、中、高三种拥塞程度。例如,缓存拥塞状态信号可以采用任意的信号类型,只要能表示相应的拥塞状态即可。例如,在一些示例中,缓存拥塞状态信号可以采用三位二进制数,通过二进数不同的编码方式表示不同的拥塞状态。例如,“001”表示低拥塞状态,“010”表示中拥塞状态,“100”表示高拥塞状态。需要说明的是,缓存拥塞状态信号所指示的多个拥塞状态的数量、缓存拥塞状态信号具体的信号类型都可以根据实际需求而定,本公开的实施例对此不作限制。

例如,多个拥塞状态基于上级路由器中存储的数据中与该上级路由器对应的接收端口所对应的数据所占用的缓存单元的数量确定。这里,数据可以为数据包、请求或命令等,数据所占用的缓存单元是该上级路由器中的缓存单元。

例如,在一些示例中,如图4所示,若发送路由器存储的数据中与端口7A对应的数据所占用的缓存单元的数量落入某一数值范围,则依据该数值范围确定发送路由器发送给接收路由器的缓存拥塞状态信号所指示的拥塞状态。例如,假设[10,20]对应第一状态,该第一状态表示高拥塞程度;[0,9]对应第二状态,该第二状态表示低拥塞程度。若发送路由器存储的数据中与端口7A对应的数据所占用的缓存单元的数量为13,则发送路由器发送的缓存拥塞状态信号指示第一状态,这里,与端口7A对应的数据所占用的13个缓存单元是指发送路由器中被相应数据占用的13个缓存单元,这些缓存单元为发送路由器中的缓存单元。

例如,在另一些示例中,如图4所示,若发送路由器存储的数据中与端口7A对应的数据所占用的缓存单元的数量占发送路由器中存储的数据所占用的缓存单元的数量的百分比落入某一数值范围,则依据该数值范围确定发送路由器发送给接收路由器的缓存拥塞状态信号所指示的拥塞状态。例如,假设[0.5,1]对应第一状态,该第一状态表示高拥塞程度;[0,0.5)对应第二状态,该第二状态表示低拥塞程度。若发送路由器存储的数据中与端口7A对应的数据所占用的缓存单元的数量为7,发送路由器中存储的数据所占用的缓存单元的数量为10,则发送路由器存储的数据中与端口7A对应的数据所占用的缓存单元的数量占发送路由器中存储的数据所占用的缓存单元的数量的百分比为0.7,则发送路由器发送的缓存拥塞状态信号指示第一状态。这里,与端口7A对应的数据所占用的7个缓存单元是指发送路由器中被相应数据占用的7个缓存单元,发送路由器中存储的数据所占用的10个缓存单元是指发送路由器中被所有数据所占用的共计10个缓存单元,这些缓存单元为发送路由器中的缓存单元。

例如,在一些示例中,接收路由器的多个接收端口至少包括第一接收端口和第二接收端口。第一接收端口所连接的上级路由器中存储的数据中与第一接收端口对应的数据所占用的缓存单元的数量大于第二接收端口所连接的上级路由器中存储的数据中与第二接收端口对应的数据所占用的缓存单元的数量,或者,第一接收端口所连接的上级路由器中存储的数据中与第一接收端口对应的数据所占用的缓存单元的数量占该上级路由器中存储的数据所占用的缓存单元的数量的百分比大于第二接收端口所连接的上级路由器中存储的数据中与第二接收端口对应的数据所占用的缓存单元的数量占该上级路由器中存储的数据所占用的缓存单元的数量的百分比。例如,多个拥塞状态至少包括第一状态和第二状态。第一接收端口对应的缓存拥塞状态信号指示第一状态,第二接收端口对应的缓存拥塞状态信号指示第二状态,第一状态的拥塞程度高于第二状态的拥塞程度。

也即是,对于接收路由器中的两个端口(以端口7A和端口7B为例),若与端口7A连接的发送路由器中存储的数据中与端口7A对应的数据所占用的缓存单元的数量大于端口7B所连接的发送路由器中存储的数据中与端口7B对应的数据所占用的缓存单元的数量,则端口7A接收到的缓存拥塞状态信号所指示的状态的拥塞程度高于端口7B接收到的缓存拥塞状态信号所指示的状态的拥塞程度。或者,若与端口7A连接的发送路由器中存储的数据中与端口7A对应的数据所占用的缓存单元的数量占该发送路由器中存储的数据所占用的缓存单元的数量的百分比大于端口7B所连接的发送路由器中存储的数据中与端口7B对应的数据所占用的缓存单元的数量占该发送路由器中存储的数据所占用的缓存单元的数量的百分比,则端口7A接收到的缓存拥塞状态信号所指示的状态的拥塞程度高于端口7B接收到的缓存拥塞状态信号所指示的状态的拥塞程度。

例如,在步骤S32中,根据缓存拥塞状态信号确定有效活动端口的优先级。例如,接收路由器的各个端口各自接收到缓存拥塞状态信号后,可以识别出各个缓存拥塞状态信号所指示的状态的拥塞程度,从而可以根据拥塞程度确定各个有效活动端口的优先级。例如,拥塞程度较高的缓存拥塞状态信号对应的端口的优先级较高,拥塞程度较低的缓存拥塞状态信号对应的端口的优先级较低。也即是,各个端口的优先级与各个端口的缓存拥塞状态信号指示的拥塞程度正相关。

例如,在一些示例中,在缓存拥塞状态信号指示低、中、高三种拥塞程度的情形,可以将优先级划分为低、中、高三种优先级,以与拥塞程度一一对应。例如,若某一有效活动端口的缓存拥塞状态信号指示低拥塞程度,则该有效活动端口的优先级为低优先级;若某一有效活动端口的缓存拥塞状态信号指示中拥塞程度,则该有效活动端口的优先级为中优先级;若某一有效活动端口的缓存拥塞状态信号指示高拥塞程度,则该有效活动端口的优先级为高优先级。需要说明的是,优先级的划分方式不限于上文描述的方式,优先级也不限于划分为低、中、高三级,优先级的划分方式和等级数量可以根据实际需求而定,本公开的实施例对此不作限制。

例如,在另一些示例中,优先级至少包括第一优先级和第二优先级。若接收路由器中的第一接收端口接收的缓存拥塞状态信号指示的拥塞程度高于第二接收端口接收的缓存拥塞状态信号指示的拥塞程度,则可以确定第一接收端口为第一优先级,第二接收端口为第二优先级,第一优先级高于第二优先级。

也即是,对于接收路由器中的两个端口(以端口7A和端口7B为例),若端口7A接收的缓存拥塞状态信号指示的拥塞程度高于端口7B接收的缓存拥塞状态信号指示的拥塞程度,则端口7A的优先级高于端口7B的优先级。

例如,在步骤S33中,根据优先级逐渐降低的顺序,将全局共享池中的缓存单元分配给有效活动端口。也即是,首先给优先级较高的有效活动端口分配缓存单元,然后再给优先级较低的有效活动端口分配缓存单元。在一些示例中,若存在多个具有同一优先级的有效活动端口,则可以以随机顺序为这些有效活动端口分配缓存单元。例如,全局共享池中的缓存单元为全局共享缓存(GSB),将这些全局共享缓存分配给有效活动端口以作为有效活动端口的端口共享缓存(PSB)。

例如,在一些示例中,在有效活动端口得到分配的情形,该有效活动端口分配得到的缓存单元的数量为1,也即是,在一次分配中,为有效活动端口分配1个缓存单元,从而可以使更多的有效活动端口得到分配。当然,本公开的实施例不限于此,也可以在一次分配中为一个有效活动端口分配多个个缓存单元,这可以根据实际需求而定,本公开的实施例对此不作限制。

例如,如图4所示,接收路由器中的缓存分配仲裁器110接收到各个端口对应的缓存拥塞状态信号后,基于缓存拥塞状态信号为各个有效活动端口确定优先级,并根据优先级逐渐降低的顺序,将全局共享池中的缓存单元分配给有效活动端口。例如,在一些示例中,只要全局共享池中的缓存单元的数量不为0,则会根据优先级为有效活动端口分配缓存单元,直到所有有效活动端口均分配到了缓存单元,或者直到全局共享池中的缓存单元的数量为0。

在本公开实施例提供的缓存分配方法中,通过将发送路由器的缓存拥塞状态传递给接收路由器,使接收路由器的缓存分配仲裁器基于发送路由器内的缓存拥塞状态调整接收路由器内各个有效活动端口的优先级,进而根据各个有效活动端口的优先级进行缓存分配,可以实现端口优先级的动态调整,并且可以在更细的粒度上动态调节缓存的分配,实现了两级路由器的缓存分配联动,从而可以保证接收路由器各条通路的拥塞状态得到缓解,以减少个别时间段个别通路突发大负载流量下的传输延迟。通过接收路由器根据各端口的工作状态,向空闲端口所连接的发送路由器发送回收请求,可以将空闲端口的闲置共享缓存重新分配给有效活动端口,以最大程度保障有效活动端口的传输带宽需求,提高了路由器中缓存的利用率,提升了片上网络的传输性能。

图10为本公开一些实施例提供的另一种用于路由器的缓存分配方法的流程示意图。在该实施例中,除了还进一步包括步骤S40、S50、S60,该实施例提供的缓存分配方法与图8所示的缓存分配方法基本相同,相关说明可参考前述内容,此处不再赘述。

例如,如图10所示,该缓存分配方法还进一步包括如下操作。

步骤S40:在初始化阶段,对多个接收端口分配多个缓存单元,以完成初始化;

步骤S50:响应于全局共享池中的缓存单元的数量大于或等于有效活动端口的数量,对每个有效活动端口分配至少一个全局共享池中的缓存单元;

步骤S60:将有效活动端口所释放的缓存单元加入全局共享池。

需要说明的是,虽然图10中以一定顺序示出了步骤S10-S60,但这并不表示这些步骤需要按照图10所示的顺序依序执行,各个步骤的执行顺序可以根据实际需求而定,本公开的实施例对此不作限制。

例如,在步骤S40中,在初始化阶段,对多个接收端口分配多个缓存单元,以完成初始化。例如,在一些示例中,可以在应用该缓存分配方法的片上系统上电时进行初始化。

图11为图10所示的方法中步骤S40的流程示意图。例如,在一些示例中,步骤S40可以进一步包括如下操作。

步骤S41:分配虚拟通道的缓存;

步骤S42:分配端口共享缓存;

步骤S43:依据配置的权重值和设置的端口缓存的预设最大值,按仲裁模式分配全局共享缓存。

例如,初始化阶段对缓存的分配主要分为3个步骤,也即上述的步骤S41、S42和S43。首先,软件通过寄存器分别分配各端口虚拟通道(VC)和端口共享缓存(PSB)这两类缓存的最小数量和最大数量。所有端口分配完后,剩余的缓存即为全局共享缓存(GSB)。下面结合图11和图4,对初始化过程进行简要说明。

例如,在步骤S41中,首先基于VC通道号按先后顺序先将VC0的配置最小值赋值给接收路由器(路由器7)的释放计数器7A,释放计数器7A将开始递减,以将VC0的缓存分配值传递给发送路由器(路由器6)。发送路由器中的接收计数器6A在采样到令牌释放信号通道(其中包括了VC通道号)有效时,将递增1,直到VC通道号发生改变,此时将接收计数器6A的值保存为VC0的令牌值,然后接收计数器6A重新从零开始计数,以统计下一个VC通道的令牌值。当通过这种方式遍历所有的VC通道号后,完成所有VC通道的令牌值接收。

例如,在步骤S42中,传递端口共享缓存(PSB)的缓存值,其原理和方法与VC通道的令牌值传递一样,只需要改变令牌通道标识符号即可,也是通过释放计数器7A和接收计数器6A来实现令牌值的接收统计。由此,完成所有端口的令牌值接收。

例如,在步骤S43中,预分配全局共享缓存(GSB)。基于各端口配置的预设最大值和寄存器配置的默认权重值,将缓存未达到预设最大值的端口送入缓存分配仲裁器110中,根据默认权重值,在每一轮分配时,各端口将按权重值逐一分配,直到全局共享缓存分配完,或者端口达到预设最大值而退出缓存分配仲裁器110。由此,完成全局共享缓存的预分配。

例如,如图10所示,当执行完步骤S40,也即是,完成初始化阶段的各端口缓存分配后,当发送路由器通过其端口6A向接收路由器的端口7A传输数据或者请求命令后,接收路由器将开始启动全局共享缓存的动态分配和闲置全局共享缓存的回收,也即是,执行步骤S10-S30。关于步骤S10-S30的相关说明可参考前述内容,此处不再赘述。

例如,在步骤S50中,在确定了有效活动端口之后,若全局共享池中的缓存单元的数量大于或等于有效活动端口的数量,则对每个有效活动端口分配至少一个全局共享池中的缓存单元。在该情形中,可以保证每个有效活动端口都能分配到缓存单元,因此无需进行空闲端口的缓存回收,从而可以避免资源开销,简化控制方式。

例如,在步骤S60中,将有效活动端口所释放的缓存单元加入全局共享池。例如,当接收路由器将接收到的数据或命令转发出去后,对应的有效活动端口将会释放出缓存单元。此时,所释放的缓存单元会被加入全局共享池,以供缓存分配仲裁器110依据各有效活动端口的优先级进行分配,所释放的缓存单元不会被归还至释放该缓存单元的端口。

图12为本公开一些实施例提供的另一种用于路由器的缓存分配方法的流程示意图。下面结合图12,对本公开实施例提供的缓存分配方法的具体操作流程进行简要说明。

如图12所示,在发送路由器开始通过端口6A向接收路由器的端口7A传输数据或者命令后,接收路由器将端口7A标记为有效活动端口,作为条件输入C2。流程C2是将正在接收数据的接收端口直接标记为有效活动端口,因为其当前有数据或者命令传输,则必然消耗预留缓存,缓存值将不可能达到预设最大值。将流程C2中标记的有效活动端口作为判断流程J2的输入。

对于接收寄存器中的其他端口(也即没有传输数据的接收端口),将所连接的上一级路由器(也即发送路由器)内所有对应于这些端口的数据和命令所占缓存的状态作为条件C1,若缓存占用不为空,则标记为备选活动端口。例如,可以采用预设阈值或者相对比例值的方式,将缓存占用状态划分为多级状态,如低-中-高的三级状态指示,作为接收路由器内进行缓存分配的权重值(该权重值表示优先级),可分别对应1(低)-2(中)-3(高)。

流程C1主要负责记录接收路由器各接收端口所对应的发送路由器内输出到该接收路由器的数据和命令的缓存占用状态,如果还有未完成传输的数据和命令,则该接收端口将标记为备选接收端口。

将C1作为判断流程J1的输入,J1将分别检查每个缓存占用不为空的备选接收端口的总缓存数是否已经达到预设最大值。若达到预设最大值,则该端口不再参与缓存分配仲裁,将其标记为无效活动端口。若未达到预设最大值,则标记其为有效活动端口,以作为判断流程J2的输入。

流程J2将判断当前接收路由器内的全局共享池中的缓存(也即剩余的全局共享缓存(GSB))的数量是否大于或等于有效活动端口的数量。若是,则进入A1流程,为每个有效活动端口分配一个全局共享缓存。若否,则进入判断流程J3。

流程J3将判断当前接收路由器是否存在空闲端口。如果没有,则进入A3操作流程,等待当前接收路由器将数据或者命令转发给下一级路由器后,将释放出的缓存加入全局共享池。如果当前存在空闲端口,则进入操作流程A4。该操作流程A4将确定缓存回收预算,并根据各空闲端口所预留的缓存数量确定各空闲端口的预算值,也即是,通过缓存分配控制器120的仲裁,将所需释放的缓存分配给各空闲端口。并且,向空闲端口连接的上一级路由器(也即发送路由器)发出回收请求。接着进入流程A5。在流程A5中,上一级路由器将释放出与预算值一致的缓存并发出令牌回收信号,例如通过自动递减其接收计数器的数值实现释放所要求的缓存数量给接收路由器。然后进入流程A6,接收路由器收到从发送路由器发送的令牌回收信号后,回收各空闲端口的缓存,并将回收的缓存加入全局共享池。

然后,进入流程A2。将各有效活动端口的上一级路由器的缓存占用状态(拥塞状态)作为仲裁权重值(优先级)送入仲裁器,将全局共享池中的全局共享缓存按优先级从高到低的顺序分配给有效活动端口,例如逐一释放给各有效活动端口,直到所有全局共享缓存分配完为止。

通过上述方式完成了缓存回收以及缓存分配,之后,将重复以上缓存动态分配和回收流程。

需要说明的是,本公开的实施例中,缓存分配方法还可以包括更多或更少的步骤,而不限于上文描述的步骤。各个步骤的执行顺序不受限制,这可以根据实际需求而定,本公开的实施例对此不作限制。

本公开至少一个实施例还提供一种片上网络。该片上网络可以在更细的粒度上动态调节缓存的分配,可以提高共享缓存的利用率,提升活动端口的传输带宽,降低传输延时,提升片上网络的传输性能。至少一些实施例提供的片上网络基于上一级发送路由器内的缓存拥塞状态调整当前接收路由器内各端口的优先级,可以实现端口优先级的动态调整,从而可以基于端口优先级进行缓存分配,进而提升传输性能。

图13为本公开一些实施例提供的一种片上网络的结构示意图。如图13所示,该片上网络200包括多个路由器。例如,多个路由器包括接收路由器和至少一个发送路由器,接收路由器配置为接收来自至少一个发送路由器传输的数据。

接收路由器通过数据及命令传输总线和双向控制通道与每个发送路由器连接。数据及命令传输总线配置为将数据从发送路由器传输至接收路由器。双向控制通道配置为在接收路由器和发送路由器之间双向传输控制信号。

接收路由器包括缓存分配控制器120、多个接收端口和多个缓存单元。每个接收端口与一个发送路由器连接。缓存分配控制器120配置为:确定多个接收端口中的有效活动端口;响应于全局共享池中的缓存单元的数量小于有效活动端口的数量且多个接收端口中存在至少一个空闲端口,回收至少一个空闲端口的缓存单元,并将回收的缓存单元加入全局共享池。例如,多个缓存单元中可进行分配的缓存单元组成全局共享池,全局共享池中的缓存单元用于被分配给有效活动端口,空闲端口为多个接收端口中除了有效活动端口之外的接收端口。

例如,有效活动端口为当前时刻在传输数据的接收端口,和/或当前时刻未传输数据、对应连接的发送路由器中存在对应的数据、且对应的缓存单元的数量小于最大预设值的接收端口。

例如,接收路由器还包括缓存分配仲裁器110,缓存分配仲裁器110配置为根据有效活动端口的优先级,将全局共享池中的缓存单元分配给有效活动端口。

例如,在一些示例中,双向控制通道为边带旁路控制通道。此时,该片上网络200可以为图4所示的片上网络100。边带旁路控制通道包括第一通道ch1、第二通道ch2和第三通道ch3。第一通道ch1配置为将发送寄存器产生的缓存拥塞状态信号传输至接收寄存器。例如,缓存拥塞状态信号指示对应的发送路由器中缓存的拥塞状态。第二通道ch2配置为将缓存分配控制器120产生的回收请求发送至发送寄存器。例如,回收请求携带对应的空闲端口的预算值,该预算值基于缓存回收预算得到。第三通道ch3配置为将发送寄存器产生的令牌回收信号传输至接收寄存器,以用于根据预算值回收空闲端口的缓存单元并将回收的缓存单元加入全局共享池。这种方式可以实现信号传输,传输方式简单,无需对逻辑进行较大更改。

例如,在另一些示例中,数据及命令传输总线可以复用为双向控制通道。也即是,缓存拥塞状态信号、回收请求、令牌回收信号均通过数据及命令传输总线进行传输,例如可以采用时分复用的方式传输这些信号以及传输路由器之间的数据。例如,可以采用自定义命令的方式利用数据及命令传输总线传输这些信号,此时,无需在片上网络200中额外设置边带旁路的物理通路,也可以实现状态信息的传递和两级路由器的缓存联动,可以减少硬件的更改,简化设计。

需要说明的是,双向控制通道的具体实现方式不限于上文描述的方式,可以采用任意适用的方式来实现双向控制通道,只要能实现缓存拥塞状态信号、回收请求、令牌回收信号的传输即可,这可以根据实际需求而定,本公开的实施例对此不作限制。缓存分配仲裁器110和缓存分配控制器120可以实现为逻辑IP,也可以实现为元器件组成的模块或电路,或者实现为其他任意的形式,本公开的实施例对此不作限制。

需要说明的是,本公开的实施例中,发送路由器和接收路由器是相对于数据传输链路中各个路由器的角色来确定的。对于某一路由器,当该路由器发送数据时,其作为发送路由器,而当该路由器接收数据时,其又作为接收路由器。也即是,从传输方向的角度看,对于某一寄存器而言,相对于上级路由器,该寄存器作为接收路由器,而相对于下级路由器,该寄存器作为发送路由器。发送路由器和接收路由器的角色是可以相互转换的。为了表述简洁,图13中的发送路由器只示出了输出端口(也即发送端口),接收路由器只示出了输入端口(也即接收端口),且这两个路由器中的其他端口的信号进行了简化,只对端口A进行了详细描述。在实际应用中,路由器既有输入端口也有输出端口。

需要说明的是,图13中仅示出了与缓存分配相关的结构,该片上网络200中的其他结构可参考常规设计,此处不再详述。关于该片上网络200的详细说明和技术效果可以参考上文中关于片上网络100以及缓存分配方法的描述,此处不再赘述。

图14为本公开一些实施例提供的另一种片上网络的示意框图。如图14所,该片上网络300配置为实现本公开任一实施例所述的用于路由器的缓存分配方法。该片上网络300可以为前述的片上网络100或片上网络200。关于该片上网络300的详细说明和技术效果可以参考上文中关于片上网络100、200以及缓存分配方法的描述,此处不再赘述。

图15为本公开一些实施例提供的一种电子设备的示意框图。如图15所示,该电子设备400包括片上网络410,该片上网络410可以为本公开任一实施例提供的片上网络,例如可以为前述的片上网络100、200、300。例如,该电子设备400可以实现为芯片、集成电路等,或者可以实现为任意的可以进行路由数据传输的设备,本公开的实施例对此不作限制。

关于该电子设备400的详细说明和技术效果可以参考上文中关于片上网络100、200、300以及缓存分配方法的描述,此处不再赘述。

有以下几点需要说明:

(1)本公开实施例附图只涉及到本公开实施例涉及到的结构,其他结构可参考通常设计。

(2)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。

以上所述,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

33页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种面向Spark的基于数据感知的缓存替换方法及系统

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类