公开/公告号CN114968866A
专利类型发明专利
公开/公告日2022-08-30
原文格式PDF
申请/专利权人 中科声龙科技发展(北京)有限公司;
申请/专利号CN202210913919.4
申请日2022-08-01
分类号G06F13/372(2006.01);G06F13/378(2006.01);G06F13/40(2006.01);G06F15/78(2006.01);
代理机构北京路浩知识产权代理有限公司 11002;
代理人耿琦
地址 100080 北京市海淀区北四环西路9号16层1605
入库时间 2023-06-19 16:34:57
法律状态公告日
法律状态信息
法律状态
2023-04-25
专利权的转移 IPC(主分类):G06F13/372 专利号:ZL2022109139194 登记生效日:20230413 变更事项:专利权人 变更前权利人:中科声龙科技发展(北京)有限公司 变更后权利人:声龙(新加坡)私人有限公司 变更事项:地址 变更前权利人:100080 北京市海淀区北四环西路9号16层1605 变更后权利人:新加坡加冷路10号#09-11 339510
专利申请权、专利权的转移
2022-11-01
授权
发明专利权授予
2022-09-16
实质审查的生效 IPC(主分类):G06F13/372 专利申请号:2022109139194 申请日:20220801
实质审查的生效
技术领域
本发明涉及集成电路技术领域,尤其涉及一种优先级分组轮询仲裁器及其仲裁方法、交叉开关和芯片。
背景技术
随着芯片工艺的不断发展,集成电路越来越大规模化,结构越来越复杂,功能越来越丰富。在从(slave)单元,例如随机存取存储器(Random Access Memory,简称RAM)有多个主(master)单元,例如算术逻辑单元(Arithmetic Logic Unit,简称ALU)访问时,仲裁器(arbiter)必不可少。在集成电路中,仲裁器是一种常见的电路结构,仲裁器一般具有多个输入端口,一个或者多个输出端口,用于对多个输入端口接收到的数据按照既定的规则进行仲裁,将仲裁出的数据传输到适当的输出端口。仲裁器是芯片片上系统经常用到的电路结构,在不同的应用场景中,对仲裁器的要求不同。仲裁器设计的优劣,对片上系统的性能有较大的影响。在高通量的应用场景中,例如网络互联结构,要求片上系统的负载均衡,对仲裁器的要求较高,在此应用场景中广泛使用的是轮询仲裁器。在网络互联结构中,轮询仲裁器可以尽可能的做到公平仲裁,以此来均衡片上系统的负载。但是如果网络互联结构的规模较大,在较小的时间片内,轮询仲裁器很难维持片上系统的负载均衡,会导致片上系统的数据吞吐量下降,从而降低片上系统的效率和稳定性。
发明内容
本发明提供一种优先级分组轮询仲裁器及其仲裁方法、交叉开关和芯片,用以克服现有的轮询仲裁器在网络互联结构的规模较大时,在较小的时间片内,很难维持片上系统的负载均衡,会导致片上系统的数据吞吐量下降,从而降低片上系统的效率和稳定性的缺陷,可以满足较大规模的网络互联结构对负载均衡的要求,在较小的时间片内,可以尽可能的做到公平仲裁,可以有效保证片上系统的负载均衡,维持片上系统较高的数据吞吐量,使片上系统具有较高的效率和稳定性。
第一方面,本发明提供一种优先级分组轮询仲裁器,包括:至少二组输入端口、一个输出端口、至少二个组内轮询仲裁电路和一个组优先控制电路;其中,
每一个所述组内轮询仲裁电路与一组所述输入端口连接,其中每一组所述输入端口包括至少二个输入端口,各所述组内轮询仲裁电路顺次连接,并均与所述组优先控制电路和所述输出端口连接;
每一个所述组内轮询仲裁电路,响应于所述组优先控制电路发出的优先级控制信号,或者前一个所述组内轮询仲裁电路发出的仲裁失败信号,对与其连接的所述输入端口接收到的请求进行仲裁,将仲裁出的请求传输至所述输出端口发送出去,或者向后一个所述组内轮询仲裁电路发出仲裁失败信号。
根据本发明提供的优先级分组轮询仲裁器,还包括:缓存电路,与各所述组内轮询仲裁电路连接和所述输入端口连接,每一个所述组内轮询仲裁电路仲裁出的请求传输至所述缓存器,再通过所述缓存器传输至所述输出端口。
根据本发明提供的优先级分组轮询仲裁器,所述优先级控制信号使每一个时钟周期只有一个所述组内轮询仲裁电路处于有效状态,并基于时钟周期进行更新,使各所述组内轮询仲裁电路依次处于有效状态。
根据本发明提供的优先级分组轮询仲裁器,所述组内轮询仲裁电路的仲裁规则:使每一个时钟周期只有一个所述输入端口具有最高优先级,并基于时钟周期进行更新,使各所述输入端口依次具有最高优先级。
根据本发明提供的优先级分组轮询仲裁器,所述输入端口与上游单元连接,接收所述上游单元的请求;所述输出端口与下游单元连接,将向所述上游单元发送仲裁出的请求。
第二方面,本发明还提供一种优先级分组轮询仲裁方法,应用于第一方面所述的优先级分组轮询仲裁器,所述方法包括:
响应于所述组优先控制电路发出的优先级控制信号,确定一个所述组内轮询仲裁电路为当前组内轮询仲裁电路,对与其连接的所述输入端口接收到的请求进行仲裁;
若仲裁出请求,所述当前组内轮询仲裁电路将仲裁出的请求传输至所述输出端口发送出去;否则,所述当前组内轮询仲裁电路向后一个所述组内轮询仲裁电路发出仲裁失败信号;
响应于前一个所述组内轮询仲裁电路发出的仲裁失败信号,后一个所述组内轮询仲裁电路作为当前组内轮询仲裁电路,对与其连接的所述输入端口接收到的请求进行仲裁。
第三方面,本发明还提供一种交叉开关,包括:第一数量的输入端口和路由器,第二数量的输出端口和第一方面所述的优先级分组轮询仲裁器;
每一个所述输入端口与一个所述路由器连接,每一个所述路由器分别与各所述优先级分组轮询仲裁器连接,每一个所述优先级分组轮询仲裁器与一个所述输出端口连接。
根据本发明提供的交叉开关,在所述路由器的每一个输出端口处均设有缓存电路。
根据本发明提供的交叉开关,所述输入端口和所述路由器为16个,所述输出端口和所述优先级分组轮询仲裁器为16个。
第四方面,本发明还提供一种芯片,包括第一方面所述的优先级分组轮询仲裁器,或者第三方面所述的交叉开关。
本发明提供的优先级分组轮询仲裁器及其仲裁方法、交叉开关和芯片,通过对轮询仲裁器的输入端口进行分组,为每一组输入端口配置一个组内轮询仲裁电路,将各组内轮询仲裁电路顺次连接,并设置一个组优先控制电路,通过组优先控制电路发出优先级控制信号或者前一个组内轮询仲裁电路发出仲裁失败信号,使组内轮询仲裁电路对输入端口接收到的请求进行仲裁,将仲裁出的请求传输至输出端口或者向后一个组内轮询仲裁电路发出仲裁失败信号,可以满足不同规模的网络互联结,特别是较大规模的网络互联结构,对负载均衡的要求,无论是在较长的时间片内,还是在较小的时间片内,都可以尽可能的做到公平仲裁,可以有效保证片上系统的负载均衡,维持片上系统较高的数据吞吐量,使片上系统具有较高的效率和稳定性,保证片上系统的高性能,非常适用于具有高通量需求的应用场景。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明提供的优先级分组轮询仲裁器的组成结构示意图;
图2是本发明提供的优先级分组轮询仲裁方法的流程示意图;
图3是本发明提供的另一优先级分组轮询仲裁器的组成结构示意图;
图4是本发明提供的另一优先级分组轮询仲裁方法的流程示意图;
图5是现有的轮询仲裁器在16个时钟周期内仲裁结果的统计图;
图6是本发明的优先级分组轮询仲裁器在16个时钟周期内仲裁结果的统计图;
图7是本发明提供的交叉开关的组成结构示意图;
图8是本发明提供的另一交叉开关的组成结构示意图;
图9是采用具有固定优先级的仲裁器的交叉开关的数据统计图;
图10是采用现有的轮询仲裁器的交叉开关的数据统计图;
图11是采用优先级分组轮询仲裁器的交叉开关的数据统计图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1,图1是本发明提供的优先级分组轮询仲裁器的组成结构示意图。本发明提供的优先级分组轮询仲裁器包括:至少二组输入端口、一个输出端口、至少二个组内轮询仲裁电路和一个组优先控制电路。如图1所示,优先级分组轮询仲裁器包括:Z组输入端口111、112……11Z,一个输出端口120,Z个组内轮询仲裁电路131、132……13Z,一个组优先控制电路140,其中Z是大于2的正整数。每一个组内轮询仲裁电路与一组输入端口连接,每一组输入端口包括至少二个输入端口。如图1所示,组内轮询仲裁电路131与一组输入端口111连接,一组输入端口111包括输入端口G11、G12……G1S,组内轮询仲裁电路132与一组输入端口112连接,一组输入端口112包括输入端口G21、G22……G2S,……,组内轮询仲裁电路13Z与一组输入端口11Z连接,一组输入端口11Z包括输入端口GZ1、GZ2……GZS,其中S是大于1的正整数,也就是将S*Z个输入端口以每一组S个输入端口分成Z组,分别与Z个组内轮询仲裁电路连接。各组内轮询仲裁电路顺次连接,并均与组优先控制电路和输出端口连接。如图1所示,组内轮询仲裁电路131、132……13Z顺次连接,组内轮询仲裁电路131、132……13Z均分别与组优先控制电路140和输出端口120连接。
每一个组内轮询仲裁电路响应于组优先控制电路发出的优先级控制信号,或者前一个组内轮询仲裁电路发出的仲裁失败信号,对与其连接的输入端口接收到的请求进行仲裁,将仲裁出的请求传输至输出端口发送出去,或者向后一个组内轮询仲裁电路发出仲裁失败信号。如图1所示,组内轮询仲裁电路131响应于组优先控制电路140发出的优先级控制信号,或者响应于组内轮询仲裁电路13Z发出的仲裁失败信号,对与其连接的输入端口G11、G12……G1S接收到的请求进行仲裁,将仲裁出的请求传输至输出端口120发送出去,或者向组内轮询仲裁电路132发出仲裁失败信号;组内轮询仲裁电路132响应于组优先控制电路140发出的优先级控制信号,或者响应于组内轮询仲裁电路131发出的仲裁失败信号,对与其连接的输入端口G21、G22……G2S接收到的请求进行仲裁,将仲裁出的请求传输至输出端口120发送出去,或者向组内轮询仲裁电路133发出仲裁失败信号;依此类推,组内轮询仲裁电路13Z响应于组优先控制电路140发出的优先级控制信号,或者响应于组内轮询仲裁电路13(Z-1)发出的仲裁失败信号,对与其连接的输入端口GZ1、GZ2……GZS接收到的请求进行仲裁,将仲裁出的请求传输至输出端口120发送出去,或者向组内轮询仲裁电路131发出仲裁失败信号。
请参阅图2,图2是本发明提供的优先级分组轮询仲裁方法的流程示意图。本发明提供的优先级分组轮询仲裁方法应用于图1所示的优先级分组轮询仲裁器,如图2所示,该优先级分组轮询仲裁方法至少包括:
201,响应于组优先控制电路发出的优先级控制信号,确定一个组内轮询仲裁电路为当前组内轮询仲裁电路,对与其连接的输入端口接收到的请求进行仲裁。
202,若仲裁出请求,当前组内轮询仲裁电路将仲裁出的请求传输至输出端口发送出去;否则,当前组内轮询仲裁电路向后一个组内轮询仲裁电路发出仲裁失败信号。
203,响应于前一个组内轮询仲裁电路发出的仲裁失败信号,后一个组内轮询仲裁电路作为当前组内轮询仲裁电路,对与其连接的输入端口接收到的请求进行仲裁。
本发明实施例提供的优先级分组轮询仲裁器及其仲裁方法,通过对轮询仲裁器的输入端口进行分组,为每一组输入端口配置一个组内轮询仲裁电路,将各组内轮询仲裁电路顺次连接,并设置一个组优先控制电路,通过组优先控制电路发出优先级控制信号或者前一个组内轮询仲裁电路发出仲裁失败信号,使组内轮询仲裁电路对输入端口接收到的请求进行仲裁,将仲裁出的请求传输至输出端口或者向后一个组内轮询仲裁电路发出仲裁失败信号,可以满足不同规模的网络互联结,特别是较大规模的网络互联结构,对负载均衡的要求,无论是在较长的时间片内,还是在较小的时间片内,都可以尽可能的做到公平仲裁,可以有效保证片上系统的负载均衡,维持片上系统较高的数据吞吐量,使片上系统具有较高的效率和稳定性,保证片上系统的高性能,非常适用于具有高通量需求的应用场景。
在一些可选的例子中,优先级控制信号可以使每一个时钟周期只有一个组内轮询仲裁电路处于有效状态,并基于时钟周期进行更新,可以使各组内轮询仲裁电路依次处于有效状态。如图1所示,组优先控制电路140可以通过Z根信号线分别与Z个组内轮询仲裁电路连接,每一个时钟周期Z根信号线输出的控制信号会更新,在每一个时钟周期Z根信号线中有且仅有一根有效,因此在每一个时钟周期Z个组内轮询仲裁电路中有且仅有一个组内轮询仲裁电路获得优先仲裁的权利。
例如,若在当前时钟周期,组优先控制电路140输出的控制信号为0……001,其中1为有效信号,接收到1的组内轮询仲裁电路在Z个组内轮询仲裁电路中获得优先仲裁的权利;在下一个时钟周期,组优先控制电路140输出的控制信号为0……010,其中1为有效信号,接收到1的组内轮询仲裁电路在Z个组内轮询仲裁电路中获得优先仲裁的权利;在再下一个时钟周期,组优先控制电路140输出的控制信号为0……100,其中1为有效信号,接收到1的组内轮询仲裁电路在Z个组内轮询仲裁电路中获得优先仲裁的权利;以此类推,在再下一个时钟周期,组优先控制电路140输出的控制信号为1……000,其中1为有效信号,接收到1的组内轮询仲裁电路在Z个组内轮询仲裁电路中获得优先仲裁的权利;在再下一个时钟周期,组优先控制电路140输出的控制信号为0……001,其中1为有效信号,接收到1的组内轮询仲裁电路在Z个组内轮询仲裁电路中获得优先仲裁的权利,以此类推。
在一些可选的例子中,组内轮询仲裁电路的仲裁规则:使每一个时钟周期只有一个输入端口具有最高优先级,并基于时钟周期进行更新,使各输入端口依次具有最高优先级。如图1所示,Z个组内轮询仲裁电路中的每一个组内轮询仲裁电路对与其连接的S个输入端口赋予仲裁优先级,在每一个时钟周期S个输入端口中有且仅有一个输入端口具有最高优先级,每一个时钟周期仲裁优先级会进行更新,使S个输入端口依次具有最高优先级。
例如,若在当前时钟周期,一个组内轮询仲裁电路对与其连接的S个输入端口的仲裁优先级由高到低排序为从1到S,其中1为最高优先级,第1个输入端口具有最高优先级;在下一个时钟周期,组内轮询仲裁电路对与其连接的S个输入端口的仲裁优先级由高到低排序为从2到S再到1,其中2为最高优先级,第2个输入端口具有最高优先级;在再下一个时钟周期,组内轮询仲裁电路对与其连接的S个输入端口的仲裁优先级由高到低排序为从3到S再到1、2。其中3为最高优先级,第3个输入端口具有最高优先级;以此类推,在再下一个时钟周期,组内轮询仲裁电路对与其连接的S个输入端口的仲裁优先级由高到低排序为从1到S,其中1为最高优先级,第1个输入端口具有最高优先级,以此类推。
在一些可选的例子中,输入端口与上游单元连接,接收上游单元的请求,输出端口与下游单元连接,将向上游单元发送仲裁出的请求。如图1所示,S*Z个输入端口可以分别与S*Z上游单元连接,接收上游单元发出的请求,上游单元可以是master单元或者路由器,例如master单元可以为ALU等,本发明实施例对master单元的类型不作限定。一个输出端口可以与下游单元连接,向上游单元发送仲裁出的请求,下游单元可以是slave单元,例如slave单元可以为RAM、总线控制器等,本发明实施例对slave单元的类型不作限定。
请参阅图3,图3是本发明提供的另一优先级分组轮询仲裁器的组成结构示意图。对于图3与图1的相同之处不再复述,本实施例只对图3与图1的不同之处进行说明,在组内轮询仲裁电路与输出端口之间设有缓存电路,缓存电路与各组内轮询仲裁电路连接和输入端口连接,每一个组内轮询仲裁电路仲裁出的请求传输至缓存器,再通过缓存器传输至输出端口。如图3所示,缓存电路150分别与Z个组内轮询仲裁电路及输出端口120连接,接收并保存每一个组内轮询仲裁电路仲裁出的请求,并将保存的请求传输至输出端口120。通过缓存电路的设置可以进一步保证片上系统的负载均衡,维持片上系统较高的数据吞吐量。
请参阅图4,图4是本发明提供的另一优先级分组轮询仲裁方法的流程示意图。本发明提供的另一优先级分组轮询仲裁方法应用于图3所示的优先级分组轮询仲裁器,如图4所示,该优先级分组轮询仲裁方法至少包括:
401,组优先控制电路140更新控制信号,输出的控制信号为0……010。
402,组内轮询仲裁电路2接收到组优先控制电路140的有效信号,屏蔽组内轮询仲裁电路1的仲裁结果信号。
403,组内轮询仲裁电路2按照仲裁规则开始对输入端口G21、G22……G2S接收到的请求进行仲裁。
404,组内轮询仲裁电路2完成仲裁,并输出仲裁结果。
405,判断组内轮询仲裁电路2是否成功仲裁,若成功仲裁,则跳转到406;否则跳转到408。
406,缓存电路150接收来自组内轮询仲裁电路2成功仲裁的请求。
407,缓存电路150通过输出端口120将成功仲裁的请求传递到下游单元。
408,组内轮询仲裁电路3按照仲裁规则开始对输入端口G31、G32……G3S接收到的请求进行仲裁。
409,组内轮询仲裁电路3完成仲裁,并输出仲裁结果。
410,判断组内轮询仲裁电路3是否成功仲裁,若成功仲裁,则跳转到411;否则跳转到组内轮询仲裁电路4按照仲裁规则开始对输入端口G41、G42……G4S接收到的请求进行仲裁,并以此类推,若组内轮询仲裁逻辑4至Z都没能成功仲裁,则跳转到412。
411,缓存电路150接收来自组内轮询仲裁电路3成功仲裁的请求,然后跳转到407。
412,组内轮询仲裁电路1按照仲裁规则开始对输入端口G11、G12……G1S接收到的请求进行仲裁。
413,组内轮询仲裁电路1完成仲裁,并输出仲裁结果。
414,判断组内轮询仲裁电路1是否成功仲裁,若成功仲裁,则跳转到415;否则跳转到416。
415,缓存电路150接收来自组内轮询仲裁电路1成功仲裁的请求,然后跳转到407。
若经过上述401至415未有组内轮询仲裁电路仲裁成功,则该时钟周期整个仲裁器未成功仲裁。
下面通过具体实施例将本发明的优先级分组轮询仲裁器与现有的轮询仲裁器进行比较,说明本发明优先级分组轮询仲裁器的优点。
本发明的优先级分组轮询仲裁器与现有的轮询仲裁器均具有16输入端口,两个仲裁器的测试用例相同,测试用例使仲裁器的16个输入端口一直持续有请求到达。本发明的优先级分组轮询仲裁器每相邻的4个输入端口被分为一组,为每一组输入端口配置一个组内轮询仲裁电路。统计16个时钟周期内两个仲裁器的仲裁情况。
请参阅图5和图6,图5是现有的轮询仲裁器在16个时钟周期内仲裁结果的统计图,图6是本发明的优先级分组轮询仲裁器在16个时钟周期内仲裁结果的统计图。
如图5所示,在三维图中高度代表成功仲裁的请求总数。在第1至第4个时钟周期内,输入端口1至4累计成功仲裁4个请求,输入端口5至16累计成功仲裁0个请求;在第5至第8个时钟周期内,输入端口5至8累计成功仲裁4个请求,输入端口1至4和9至16累计成功仲裁0个请求;在第9至第12个时钟周期内,输入端口9至12累计成功仲裁4个请求,输入端口1至8和13至16累计成功仲裁0个请求;在第13至第16个时钟周期内,输入端口13至16累计成功仲裁4个请求,输入端口1至12累计成功仲裁0个请求。该仲裁器在16个时钟周期内成功仲裁共计16个请求。
如图6所示,在第1至第4个时钟周期内,输入端口1至4累计成功仲裁1个请求,输入端口5至8累计成功仲裁1个请求,输入端口9至12累计成功仲裁1个请求,输入端口13至16累计成功仲裁1个请求;在第5至第8个时钟周期内,输入端口1至4累计成功仲裁1个请求,输入端口5至8累计成功仲裁1个请求,输入端口9至12累计成功仲裁1个请求,输入端口13至16累计成功仲裁1个请求;在第9至第12个时钟周期内,输入端口1至4累计成功仲裁1个请求,输入端口5至8累计成功仲裁1个请求,输入端口9至12累计成功仲裁1个请求,输入端口13至16累计成功仲裁1个请求;在第13至第16个时钟周期内,输入端口1至4累计成功仲裁1个请求,输入端口5至8累计成功仲裁1个请求,输入端口9至12累计成功仲裁1个请求,输入端口13至16累计成功仲裁1个请求。该仲裁器在16个时钟周期内成功仲裁共计16个请求。
对比两个仲裁器的数据,在相同的时间片内,成功仲裁的总数相同,但是在更小的时间片内,本发明的优先级分组轮询仲裁器以组为单位,相比现有的轮询仲裁器更公平,更有利于负载均衡。在一种应用场景中,如果从16个master单元发出请求,master单元与仲裁器之间的路径较远,且存在共用的数据通道。若在第1至第4个时钟周期这种较小的时间片内,与现有的轮询仲裁器的输入端口1至4连接的master单元的请求被优先仲裁,那么与现有的轮询仲裁器的输入端口5至16连接的master单元的请求将会被延迟,输入端口的排序越靠后延迟越严重。这种延迟可能会导致与现有的轮询仲裁器连接的master单元较长时间的等待或者空闲,或者master单元与现有的轮询仲裁器之间的数据通道出现拥堵。而本发明的优先级分组轮询仲裁器则不会出现这种情况。
交叉开关(crossbar)是集成电路中一种常见的网络互联结构,交叉开关一般具有多个输入端口和多个输出端口,通过将元器件连接成矩阵结构实现多个输入端口与多个输出端口的网络互联功能。请参阅图7,图7是本发明提供的交叉开关的组成结构示意图。本发明提供的交叉开关包括:第一数量的输入端口和路由器,第二数量的输出端口和图1或图3的优先级分组轮询仲裁器。如图7所示,交叉开关包括:N个输入端口711、712、713……71N,N个路由器721、722、723……72N,M个输出端口731、732、733……73M,M个图1或图3的优先级分组轮询仲裁器741、742、743……74M,其中N和M均为大于3的正整数。每一个输入端口与一个路由器连接,每一个路由器分别与各优先级分组轮询仲裁器连接,每一个优先级分组轮询仲裁器与一个输出端口连接。如图7所示,每一个路由器具有1个输入端口和M个输出端口,N个输入端口711、712、713……71N分别与N个路由器721、722、723……72N一一对应连接,每一个优先级分组轮询仲裁器的N个输入端口和1个输出端口,M个输出端口731、732、733……73M分别与M个优先级分组轮询仲裁器741、742、743……74M一一对应连接,每一个路由器的M个输出端口分别与M个优先级分组轮询仲裁器741、742、743……74M连接,每一个优先级分组轮询仲裁器的N个输入端口分别与N个路由器721、722、723……72N连接,形成N*M的交叉开关。
其中,路由器(router)是集成电路中一种常见的电路结构,一般具有一个或者多个输入端口,多个输出端口,用于将输入端口接收到的数据按照既定的规则传递到适当的输出端口。在本发明实施例中,每一个路由器可以同时路由多个请求到不同的优先级分组轮询仲裁器进行仲裁。
本发明提供的交叉开关,通过采用优先级分组轮询仲裁器,无论是在较长的时间片内,还是在较小的时间片内,都可以尽可能的做到公平仲裁,可以有效保证交叉开关的负载均衡,从而保证交叉开关具有较高的效率和稳定性,保证片上系统的高性能。
在一些可选的例子中,在路由器的每一个输出端口处均设有缓存电路。如图7所示,在N个路由器中每一个路由器的M各输出端口均设有缓存电路。
在一些可选的例子中,输入端口与上游单元连接,接收上游单元的请求,输出端口与下游单元连接,将向上游单元发送仲裁出的请求。如图7所示,N个输入端口可以分别与N上游单元连接,接收上游单元发出的请求,上游单元可以是master单元,例如master单元可以为ALU等,本发明实施例对master单元的类型不作限定。M个输出端口可以与下游单元连接,向上游单元发送仲裁出的请求,下游单元可以是slave单元,例如slave单元可以为RAM、总线控制器等,本发明实施例对slave单元的类型不作限定。
请参阅图8,图8是本发明提供的另一交叉开关的组成结构示意图。如图8所示,交叉开关可以包括16个输入端口、16个路由器、16个输出端口和16个优先级分组轮询仲裁器,形成16x16的交叉开关。在16个输入端口持续有请求到达,且请求随机时,16个路由器会一直有足够多的请求发送到16个优先级分组轮询仲裁器等待仲裁, 16个优先级分组轮询仲裁器的输入端口会一直有请求到达,与16个优先级分组轮询仲裁器连接的16个输出端口一直不会拥堵。
下面通过具体实施例将本发明的交叉开关与现有的交叉开关进行比较,说明本发明交叉开关的优点。
现有的交叉开关中的仲裁器通常采用具有固定优先级的仲裁器或者现有的轮询仲裁器。本发明的交叉开关与现有的交叉开关均为16*16的交叉开关。由于交叉开关的输出端口一直不会拥堵,假设交叉开关中仲裁器的输入端口的请求一直是满的,对交叉开关的输出端口进行测试,采用具有固定优先级的仲裁器的交叉开关、采用现有的轮询仲裁器的交叉开关和采用优先级分组轮询仲裁器的交叉开关的效率都是100%。对上述三种交叉开关的输入端口进行统计,根据数据的差异性对比来进行评判。
请参阅图9、图10和图11,图9是采用具有固定优先级的仲裁器的交叉开关的数据统计图,图10是采用现有的轮询仲裁器的交叉开关的数据统计图,图11是采用优先级分组轮询仲裁器的交叉开关的数据统计图。
如图9所示,对采用具有固定优先级的仲裁器的16*16的交叉开关,进行32个时钟周期的采样统计,在三维图中高度代表交叉开关的输入端口通过的请求总数。在交叉开关的输入端口1至2,即输入端口1和输入端口2,在第1至第2个时钟周期内,有32个请求通过。由于具有固定优先级的仲裁器的特点是:从仲裁器的输入端口1到仲裁器的输入端口16,优先级逐渐降低。因此在整个32个时钟周期内,交叉开关的输入端口1至2通过的请求数量为512个,而其他的输入端口通过的请求数量为0个。
如图10所示,对采用现有的轮询仲裁器的16*16的交叉开关,进行32个时钟周期的采样统计。由于现有的轮询仲裁器的特点是:在当前时钟周期,从仲裁器的输入端口1到仲裁器的输入端口16,优先级逐渐降低;在下一个时钟周期,从仲裁器的输入端口2到仲裁器的输入端口16,再到仲裁器的输入端口1,优先级逐渐降低;在再下一个时钟周期,从仲裁器的输入端口3到仲裁器的输入端口16,再到仲裁器的输入端口1和仲裁器的输入端口2,优先级逐渐降低,依此类推;在再下一个时钟周期,从仲裁器的输入端口1到仲裁器的输入端口16,优先级逐渐降低,依此类推。因此在整个32个时钟周期内,交叉开关的输入端口1至2、3至4、5至6、7至8、9至10、11至12、13至14,15至16通过的请求数量各为64个,共计512个。其中,
在第1至第2个时钟周期,交叉开关的输入端口1至2通过32个请求,其他的输入端口通过0个请求;
在第3至第4个时钟周期,交叉开关的输入端口3至4通过32个请求,其他的输入端口通过0个请求;
在第5至第6个时钟周期,交叉开关的输入端口5至6通过32个请求,其他的输入端口通过0个请求;
在第7至第8个时钟周期,交叉开关的输入端口7至8通过32个请求,其他的输入端口通过0个请求;
在第9至第10个时钟周期,交叉开关的输入端口9至10通过32个请求,其他的输入端口通过0个请求;
在第11至第12个时钟周期,交叉开关的输入端口11至12通过32个请求,其他的输入端口通过0个请求;
在第13至第14个时钟周期,交叉开关的输入端口13至14通过32个请求,其他的输入端口通过0个请求;
在第15至第16个时钟周期,交叉开关的输入端口15至16通过32个请求,其他的输入端口通过0个请求;
在第17至第18个时钟周期,交叉开关的输入端口1至2通过32个请求,其他的输入端口通过0个请求;
在第19至第20个时钟周期,交叉开关的输入端口3至4通过32个请求,其他的输入端口通过0个请求;
在第21至第22个时钟周期,交叉开关的输入端口5至6通过32个请求,其他的输入端口通过0个请求;
在第23至第24个时钟周期,交叉开关的输入端口7至8通过32个请求,其他的输入端口通过0个请求;
在第25至第26个时钟周期,交叉开关的输入端口9至10通过32个请求,其他的输入端口通过0个请求;
在第27至第28个时钟周期,交叉开关的输入端口11至12通过32个请求,其他的输入端口通过0个请求;
在第29至第30个时钟周期,交叉开关的输入端口13至14通过32个请求,其他的输入端口通过0个请求;
在第31至第32个时钟周期,交叉开关的输入端口15至16通过32个请求,其他的输入端口通过0个请求。
如图11所示,对采用优先级分组轮询仲裁器的16*16的交叉开关,进行32个时钟周期的采样统计。优先级分组轮询仲裁器以每两个输入端口为1组,共分为8组。由于优先级分组轮询仲裁器的特点是:仲裁器的8个组随着时钟周期依次具有最高优先级,优先级随组的排序依次降低。例如,在当前时钟周期,从第1组到第8组的优先级逐渐降低;在下一个时钟周期,从第2组到第8组再到第1组的优先级逐渐降低,依此类推;在再下一个时钟周期,第1组到第8组的优先级逐渐降低,依此类推。在每一个组内遵循轮询仲裁的规则。以第1组为例,第2组至第8组与第1组类似,在当前时钟周期,在第1组内输入端口1的优先级大于输入端口2的优先级;在下一个时钟周期,在第1组内输入端口2优先级大于输入端口1的优先级;在再下一个时钟周期,在第1组内输入端口1优先级大于输入端口2的优先级,依此类推。因此在整个32时钟周期内,输入端口1至2、3至4、5至6、7至8、9至10、11至12、13至14、15至16通过的请求数量各为64个,共计512个。其中,
在第1至第2个时钟周期,交叉开关的输入端口1至2、3至4、5至6、7至8、9至10、11至12、13至14、15至16分别各通过2个请求;
在第3至第4个时钟周期,交叉开关的输入端口1至2、3至4、5至6、7至8、9至10、11至12、13至14、15至16分别各通过2个请求;依此类推。
在第31至第32个时钟周期,交叉开关的输入端口1至2、3至4、5至6、7至8、9至10、11至12、13至14、15至16分别各通过2个请求。
在实际应用场景中,交叉开关的输入端口通常不会一直有请求到达,交叉开关的输出端口也不会一直不拥堵。交叉开关仲裁的公平性,有利于交叉开关的负载均衡,也有利于提高交叉开关的效率和稳定性。通过将本发明的交叉开关与采用具有固定优先级的仲裁器的交叉开关以及采用现有的轮询仲裁器的交叉开关进行对比。采用具有固定优先级的仲裁器的交叉开关,由于交叉开关的输入端口1具有最高的仲裁优先级,若交叉开关的输入端口1一直有请求到达,就一直优先仲裁交叉开关的输入端口1的请求。因此从图9中可见,输入端口1至2将一直有请求通过,但是其他输入端口通过的请求数量为0。只有当路由器1和2中缓存的请求为空时,排序靠后的交叉开关的输入端口才有机会被仲裁。在较长的时间片内,交叉开关的输入端口排序靠前的效率高,排序越靠后效率越低,这种表现不符合负载不均衡的要求,平均下来,整个交叉开关的效率较低。采用现有的轮询仲裁器的交叉开关与本发明的交叉开关相比,从图10 和图11对比中可见,本发明的交叉开关在较小的时间片内,更能够保证公平仲裁,使交叉开关的各个输入端口在维持高效率的前提下效率更平均,使整个交差开关更稳定。
本发明还提供了一种芯片,该芯片可以包括图1或图3的优先级分组轮询仲裁器,和/或图7或图8的交叉开关。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
机译: 具有系统总线外部总线和总线仲裁器的芯片上系统,总线仲裁器和总线仲裁器具有可编程的优先级,以及用于分配可编程优先级的方法
机译: 用于提供高速仲裁的可编程固定优先级和轮询仲裁器及其总线控制方法
机译: 用于提供高速仲裁的可编程固定优先级和轮询仲裁器及其总线控制方法