互连总线中虚拟通道的优先级推送方法和装置与流程

文档序号:14879598发布日期:2018-07-07 09:22阅读:190来源:国知局

本申请涉及芯片技术领域,尤其涉及一种互连总线中虚拟通道的优先级推送方法和装置。



背景技术:

图1所示为一个芯片内部总线互联的示意图。其中,路由器(router)负责实现每个主口(master)访问从口(slave)的路由计算,router内部为交叉互联(crossbar)结构,根据每个master发出的访问命令(transaction)的访问地址,决定将其路由到某个输出节点。同时,由于每个master对每个slave都有不同的业务访问需求,整个互联通路采用了多个虚拟通道(virtualchannel,vc),每个vc负责传输一种业务访问类型。多个vc在实际传输中共享一个实际的物理通道。

图2所示为router内部多个vc共享一个物理通道的示意图。图2中以三个vc为例,每个vc负责一种需求的业务,分别是vc0对应实时性(realtime,rt)需求、vc1对应低延时(lowlatency,ll)需求、vc2对应大带宽(bulk,b)需求,其中:rtvc有动态的优先级需求,包含高(high)、中(medium)、低(low)三个优先级,优先级高>中>低;llvc固定中优先级,bvc固定低优先级。

在实际场景中,会出现以下两种问题:

问题一:master/router/slave内部经常存在着低优先级(lowqoslevel)的访问命令堵塞高优先级(highqoslevel)的访问命令的场景,如图2中router0的rtvc中,低优先级无法获得仲裁,导致高优先级无法传输。

问题二:整个通路的多级节点中也存在着低优先级的访问命令堵塞高优先级的访问命令的场景,如图2中router1的rtvc被低优先级的访问命令填满,导致router0的rtvc无法向前传递。

针对上述问题,现有的解决方案一是:通过对每条通路增加对应的服务质量推送(qospressure)伴随信号,当下级节点反压当前节点时,会将当前的访问命令的高优先级向下推送(push),如此进行一级一级传递,最终传递到反压的堵塞节点,代替访问命令的低优先级参与仲裁,可有效解决问题一中的低优先级堵塞高优先级的问题,但是,这种解决方案对于问题二中的多vc出现的低优先级堵塞高优先级的问题无法解决。

针对上述问题,现有的解决方案二是:对每个需要进行服务质量(qos)提升的vc,增加一个优先级选择(priority_sel)信号,该信号用来选择两个固定的优先级(qoslevel),整个vc的服务质量可以根据优先级选择信号进行切换,例如,某个vc中的任一访问命令被堵塞时,利用所述优先级选择信号可以提升该vc中所有访问命令的优先级,以解决堵塞问题。不过,这种解决方案中的控制方式过于粗放,一旦服务质量的优先级提升,整个vc通路都进行彻底提升,对于后续进入互联总线内且不需要进行qos提升的访问命令,也做了对应的提升;同时,由于每个vc都需要设置一个独立的优先级选择信号,会导致走线过多且应用不灵活。



技术实现要素:

本申请实施例提供一种互连总线中虚拟通道的优先级推送方法和装置,解决现有的互连总线内部多虚拟通道使用场景中,某虚拟通道的某个节点内部低优先级的访问命令堵塞高优先级的访问命令的问题和某虚拟通道的多级节点中出现的低优先级的访问命令堵塞高先级的访问命令的问题。

本申请实施例提供的具体技术方案如下:

第一方面,提供一种互连总线中虚拟通道的优先级推送方法,包括:

第一虚拟通道中的第一节点接收上一跳节点推送的访问命令的优先级;

所述第一节点监控所述第一节点在所述第一虚拟通道内负载的所有访问命令的优先级;

所述第一节点在所述上一跳节点推送的访问命令的优先级、所述第一虚拟通道内负载的所有访问命令的优先级中选择最高的优先级,作为所述第一节点在所述第一虚拟通道的首个访问命令的优先级进行总线使用权的仲裁;

在所述首个访问命令获得仲裁后,所述第一节点将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳节点。

该有益效果在于,在多个虚拟通道的互联总线结构中,每个虚拟通道的优先级可以根据整个虚拟通道内部的访问命令的优先级和接收到的上一跳节点的访问命令的优先级,实现动态调整,而且优先级的动态调整向前推送,不会影响到后级数据,作用域控制精准;此外,推送的优先级不会在固定的优先级之间切换,实现灵活,控制精度更高。

结合第一方面,一种可能的设计中,所述第一节点监控所述第一节点在所述第一虚拟通道内负载的所有访问命令的优先级之前,所述方法还包括:

确定所述第一节点在所述第一虚拟通道内负载有至少一个访问命令;

结合第一方面,一种可能的设计中,在所述首个访问命令获得仲裁后,所述第一节点将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳节点,包括:

确定所述下一跳节点对应的第一虚拟通道中存在信用额度;

在所述首个访问命令获得仲裁后,将所述选择的优先级、所述首个访问命令和所述第一虚拟通道的标识同步发送至所述下一跳节点。

结合第一方面,一种可能的设计中,在所述首个访问命令获得仲裁后,所述第一节点将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳节点,包括:

确定所述下一跳节点对应的第一虚拟通道中不存在信用额度;

将所述选择的优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点,所述服务质量提升数据包用来传输优先级。

该有益效果在于,采用信用额度的机制来进行流控,当下一跳节点对应的第一虚拟通道中不存在信用额度时,通过服务质量提升数据包用来传输优先级,不携带任何访问数据,此时服务质量提升数据包不消耗任何信用额度也不受信用额度的反压,从而使优先级向前传递,实现优先级的动态调整,防止高优先级的访问命令被堵塞。

结合第一方面,一种可能的设计中,将所述选择的优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点之后,所述方法还包括:

若确定所述下一跳节点对应的第一虚拟通道中仍不存在信用额度,且接收到上一跳节点推送的优先级高于所述选择的优先级时,将所述上一跳节点推送的优先级和所述第一虚拟通道的标识携带在新的服务质量提升数据包中发送至所述下一跳节点。

该有益效果在于,在优先级需要更新时,能够实现优先级的动态调整,实现优先级的逐级推送。

第二方面,提供一种互连总线中虚拟通道的优先级推送装置,应用于第一虚拟通道中的第一节点,包括:

接收单元,用于接收上一跳节点推送的访问命令的优先级;

监控单元,用于监控所述第一节点在所述第一虚拟通道内负载的所有访问命令的优先级;

确定单元,用于在所述上一跳节点推送的访问命令的优先级、所述第一虚拟通道内负载的所有访问命令的优先级中选择最高的优先级,作为所述第一节点在所述第一虚拟通道的首个访问命令的优先级进行总线使用权的仲裁;

推送单元,用于在所述首个访问命令获得仲裁后,将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳节点。

结合第二方面,一种可能的设计中,所述监控单元还用于:

在监控所述第一节点在所述第一虚拟通道内负载的所有访问命令的优先级之前,确定所述第一节点在所述第一虚拟通道内负载有至少一个访问命令;

结合第二方面,一种可能的设计中,所述确定单元具体用于:

确定所述下一跳节点对应的第一虚拟通道中存在信用额度;

在所述首个访问命令获得仲裁后,将所述选择的优先级、所述首个访问命令和所述第一虚拟通道的标识同步发送至所述下一跳节点。

结合第二方面,一种可能的设计中,所述推送单元具体用于:

确定所述下一跳节点对应的第一虚拟通道中不存在信用额度;

将所述选择的优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点,所述服务质量提升数据包用来传输优先级。

结合第二方面,一种可能的设计中,所述推送单元还用于:

将所述选择的优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点之后,若确定所述下一跳节点对应的第一虚拟通道中仍不存在信用额度,且接收到上一跳节点推送的优先级高于所述选择的优先级时,将所述上一跳节点推送的优先级和所述第一虚拟通道的标识携带在新的服务质量提升数据包中发送至所述下一跳节点。

第三方面,提供一种设备,该设备包括处理器、存储器和接口单元,其中,所述存储器中存有计算机可读程序,所述处理器通过运行所述存储器中的程序,控制接口单元,实现第一方面涉及的优先级推送方法方法。

第四方面,提供一种计算机存储介质,用于储存为上述第一方面所述计算机软件指令,其包含用于执行上述方面所设计的程序。

应理解,本申请实施例的第二至四方面与本申请实施例的第一方面的技术方案一致,各方面及对应的可实施的设计方式所取得的有益效果相似,不再赘述。

附图说明

图1为芯片内部总线互联的示意图;

图2为router内部多个vc共享一个物理通道的示意图;

图3为本申请实施例的互连总线中虚拟通道的优先级推送方法流程图;

图4为本申请实施例的改进后的router结构示意图;

图5为本申请实施例的服务质量提升数据包的产生和处理流程图;

图6为本申请实施例的互连总线中虚拟通道的优先级推送装置结构图;

图7为本申请实施例的优先级推送设备结构图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。

本申请实施例提供一种互连总线中虚拟通道的优先级推送方法和装置,解决现有的互连总线内部多虚拟通道使用场景中,某虚拟通道内部低优先级的访问命令堵塞高优先级的访问命令的问题和多级节点中某节点虚拟通道出现的低优先级的访问命令堵塞高其他节点虚拟通道中高先级的访问命令的问题,由于可以推送任何等级的优先级,实现方式灵活,且针对虚拟通道的优先级控制精度更高。其中,方法和装置是基于同一发明构思的,由于方法及装置解决问题的原理相似,因此装置与方法的实施可以相互参见,重复之处不再赘述。

参阅图3所示,本申请实施例提供一种互连总线中虚拟通道的服务质量优先级推送方法,具体流程如下:

步骤31:第一虚拟通道中的第一节点接收上一跳节点推送的访问命令的优先级。

需要说明的是,本申请实施例中的优先级指的是服务质量优先级。

步骤32:所述第一节点监控所述第一节点在所述第一虚拟通道内负载的所有访问命令的优先级。

需要说明的是,第一节点在第一虚拟通道内负载的访问命令指的是存储在第一节点本地待处理的访问命令,而步骤31中的上一跳节点推送的优先级,是从存储在上一跳节点本地待处理的访问命令的优先级以及上一跳节点接收到的优先级中选择出来的最高的优先级;若上一跳节点没有接收到优先级,此时上一跳节点推送的优先级,是从存储在上一跳节点本地待处理的访问命令的优先级中的最高优先级。

进一步的,所述第一节点在执行步骤32之前,还需要执行:确定所述第一虚拟通道内部存在至少一个访问命令。

步骤33:所述第一节点在所述上一跳节点推送的访问命令的优先级、所述第一虚拟通道内负载的所有访问命令的优先级中选择最高的优先级,作为所述第一节点在所述第一虚拟通道的首个访问命令的优先级进行总线使用权的仲裁。

步骤34:在所述首个访问命令获得仲裁后,所述第一节点将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳节点。

具体的,在所述首个访问命令获得仲裁后,所述第一节点将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳节点,包括以下两种可能的实施方式:

第一种可能的实施方式中,若确定所述下一跳节点对应的第一虚拟通道中存在信用额度时,在所述首个访问命令获得仲裁后,将所述选择的优先级、所述首个访问命令和所述第一虚拟通道的标识同步发送至所述下一跳节点。

第二种可能的实施方式中,若确定所述下一跳节点对应的第一虚拟通道中不存在信用额度时,将所述选择的优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点,所述服务质量提升数据包用来传输优先级。

第二种可能的实施方式中,在下一跳节点没有信用额度的情况下,依然能够实现虚拟通道的服务质量优先级的逐级推送。

其中:虚拟通道的标识用来区分当前传递的优先级对应哪一个虚拟通道。

进一步,第一节点在步骤33执行完毕之后,即将所述选择的服务质量优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点之后,若确定所述下一跳节点对应的第一虚拟通道中仍不存在信用额度,且接收到上一跳节点推送的优先级高于所述选择的优先级时,将所述上一跳节点推送的优先级和所述第一虚拟通道的标识携带在新的服务质量提升数据包中发送至所述下一跳节点。

通过上述方法,在多个虚拟通道的互联总线结构中,每个虚拟通道的优先级可以根据整个虚拟通道内部的访问命令的优先级和接收到的上一跳节点的访问命令的优先级,实现动态调整,而且优先级的动态调整向前推送,不会影响到后级数据,作用域控制精准;此外,推送的优先级不会在固定的优先级之间切换,实现灵活,控制精度更高。

下面通过一个具体的实例来详细说明图3中的方法。

如图4所示,为一个改进后的当前节点示意图。在本申请实施例中,节点为路由器(router)。

所述router包括多个端口(port),与所述多个端口一一对应的多个分离器、总线仲裁器、监控单元以及数据选择器。

所述多个端口用于接收访问命令和优先级,并将接收的访问命令和优先级发送给对应的分离器。所述访问命令包括上一跳节点传递到当前节点的数据和命令,所述优先级则用于描述上一跳节点输出到当前节点的访问命令的优先级。

所述多个分离器中的每一个与数据选择器之间均设有3种业务类型的队列(queue)。所述多个分离器通过与所述访问命令的业务类型对应的queue将所述访问命令发送给所述数据选择器。所述queue可以为先入先出性质的缓存元件。在每个分离器对应的3种业务类型的queue中,包括rtqueue,llqueue和bqueue,分别用来存储传递到当前节点待处理的各个访问命令。

所述监控单元用于监控对应业务类型的queue中存在的所有访问命令的优先级、从当前queue中存在的所有访问命令的优先级、输入的优先级中选择最高的优先级输出到仲裁器进行优先级仲裁。

所述仲裁器用于根据输入的多个优先级,以一定的优先算法仲裁哪个优先级对应的queue应获得对总线的使用权

所述数据选择器用于根据所述仲裁器的仲裁结果,将对应的queue中的首个访问命令以及参与仲裁的优先级输出至下一跳节点。

其中qos_p为上级router传递来的transaction的服务质量优先级,qos_n为送往下级节点的transaction的服务质量优先级(qoslevel)。

图4中端口0(port0)对应的rtvc由于队首的低优先级的访问命令无法获得仲裁,导致内部高优先级的访问命令被堵塞。

图4中的rt_qos_mon为rtvc的qos监控单元,负责监控rtvc的队列(queue)中存在的所有访问命令的优先级,同时收集port0传递来的qos_p,从所有访问命令的优先级和传递来的qos_p中选择最高的优先级(这里为高优先级),代替该vc队首的访问命令的低优先级(lowqos),送入总线仲裁器(arbiter)参与仲裁,以此方式实现router内部的优先级的提升。

rtvc的队首访问命令获得仲裁后,会将对应参与仲裁的qos_n(high_qos)同步送出给下级router,确保下级router能够看到上级router推送(push)过来的高优先级。

服务质量优先级的传递机制:

由于router之间使用的是多个vc,为了防止vc在共享物理通道时相互堵塞,vc在传递过程中通常采用信用额度(credit)机制进行流控,所以在优先级传递时需要考虑下级节点是否有credit接收访问命令,针对是否有credit,会有两种处理方式:

第一种处理方式是,当下级节点对应的rtvc有credit时,qos_n的传递与当前vc的队首访问命令同步发送至下级router或slave,同时将当前vc的标识也同步传递。

第二种处理方式是,当下级节点对应的rtvc没有credit时,说明其后级router或slave对应的rtvc有阻塞,当前router需要将当前vc中选择的最高优先级传递到下级router或slave。由于下级节点没有credit,qos_n无法伴随访问命令同步发出,只能通过产生一个服务质量提升数据包的方式来传递qos_n,此时,服务质量提升数据包的产生和处理流程可参阅图5所示。

s50:检测下级节点是否存在credit接收数据,若不存在,则执行s51;否则结束流程。

s51:检测当前rtvc的队列中是否存在访问命令,若是,则执行s52;否则结束流程。

s52:单独产生一个服务质量提升数据包(qospresspacket),该packet用来传输服务质量提升信息,仅携带当前rtvc的标识信息,不携带任何有效的访问命令。

s53:将该qospresspacket传递到下级节点。

具体的,该qospresspacket可以直接传递到下级节点,也可以与其他vc(如图4中的vc1和vc2)进行仲裁,获得仲裁后再传递到下级节点。该qospresspacket的传递不消耗任何credit,也不受任何credit的反压。

s54:继续下一个循环。

s55:检测下级节点是否存在credit,若不是,则执行s56;否则结束流程。

s56:如果下级节点对应的rtvc的credit反压状态一直没有撤离,当接收到一个上级节点推送来的qos_p引起qos_n需要更新时,执行s52,重新产生一个qospresspacket来推送至下级节点。

基于上述实施例,如图6所示,本申请实施例提供一种互联总线中虚拟通道的优先级推送装置600,如图6所示,该装置600包括接收单元601、监控单元602、确定单元603和推送单元604,其中:

接收单元601,用于接收上一跳节点推送的访问命令的优先级;

监控单元602,用于监控所述第一节点在所述第一虚拟通道内负载的所有访问命令的优先级;

确定单元603,用于在所述上一跳节点推送的访问命令的优先级、所述第一虚拟通道内负载的所有访问命令的优先级中选择最高的优先级,作为所述第一节点在所述第一虚拟通道的首个访问命令的优先级进行总线使用权的仲裁;

推送单元604,用于在所述首个访问命令获得仲裁后,将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳节点。

可选的,所述监控单元602还用于:

在监控所述第一节点在所述第一虚拟通道内负载的所有访问命令的优先级之前,确定所述第一节点在所述第一虚拟通道内负载有至少一个访问命令;

可选的,所述确定单元603具体用于:

确定所述下一跳节点对应的第一虚拟通道中存在信用额度;

在所述首个访问命令获得仲裁后,将所述选择的优先级、所述首个访问命令和所述第一虚拟通道的标识同步发送至所述下一跳节点。

可选的,所述推送单元604具体用于:

确定所述下一跳节点对应的第一虚拟通道中不存在信用额度;

将所述选择的优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点,所述服务质量提升数据包用来传输优先级。

可选的,所述推送单元604还用于:

将所述选择的优先级和所述第一虚拟通道的标识携带在服务质量提升数据包中发送至所述下一跳节点之后,若确定所述下一跳节点对应的第一虚拟通道中仍不存在信用额度,且接收到上一跳节点推送的优先级高于所述选择的优先级时,将所述上一跳节点推送的优先级和所述第一虚拟通道的标识携带在新的服务质量提升数据包中发送至所述下一跳节点。

本申请实施例中的装置600的各个单元的功能实现以及交互方式可以进一步参照相关方法实施例的描述,在此不再赘述。

应理解以上装置600中的各个单元的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。该处理元件可以是通用处理器,例如中央处理器(英文:centralprocessingunit,简称:cpu),还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(英文:application-specificintegratedcircuit,简称:asic),或,一个或多个微处理器(英文:digitalsignalprocessor,简称:dsp),或,一个或者多个现场可编程门阵列(英文:field-programmablegatearray,简称:fpga)等。

根据同一发明构思,本申请实施例还提供一种优先级推送设备700,如图7所示,该设备700包括处理器701、存储器702和接口单元703,该设备700可以为互联总线中的master、slave或router,执行本申请方案的程序代码保存在存储器702中,用于指令处理器701执行图3所示的优先级推送方法,具体包括:接收上一跳设备推送的访问命令的优先级;监控所述设备700在所述第一虚拟通道内负载的所有访问命令的优先级;在所述上一跳设备推送的访问命令的优先级、所述第一虚拟通道内负载的所有访问命令的优先级中选择最高的优先级,作为所述设备700在所述第一虚拟通道的首个访问命令的优先级进行总线使用权的仲裁;在所述首个访问命令获得仲裁后,通过接口单元703将所述选择的优先级作为所述第一节点的访问命令的优先级推送至下一跳设备。

本申请还可以通过对处理器进行设计编程,将图3所示的方法所对应的代码固化到芯片内,从而使芯片在运行时能够执行图3所示的方法。

可以理解的是,本申请实施例上述设备700中涉及的处理器可以是一个cpu,dsp,asic,或一个或多个用于控制本申请方案程序执行的集成电路。计算机系统中包括的一个或多个存储器,可以是只读存储器(英文:read-onlymemory,简称rom)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(英文:randomaccessmemory,简称:ram)或者可存储信息和指令的其他类型的动态存储设备,也可以是磁盘存储器。这些存储器、接口单元通过总线与处理器相连接,或者也可以通过专门的连接线与处理器连接。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

尽管已描述了本申请的可选的实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。

显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1