一种总线仲裁的方法、装置、存储介质及电子设备与流程

文档序号:32050046发布日期:2022-11-03 08:37阅读:58来源:国知局
一种总线仲裁的方法、装置、存储介质及电子设备与流程

1.本公开实施例涉及数据处理领域,具体地涉及一种总线仲裁的方法、装置、存储介质及电子设备。


背景技术:

2.随着对计算能力需求的增加,当前各种gpu,cpu,npu计算核心也在增加。芯片内部对数据传输的能力需求也在迅速提升。例如在gpu等多核计算过程中,多个ap(application processor) 都会同各个ram有数据通信,所以通常都是多端点多总线传输。而如何设计总线仲裁,以提高多端点多总线的传输效率,是亟待解决的问题。


技术实现要素:

3.本公开的目的在于,针对现有技术中存在的问题,提供一种总线仲裁的方法、装置、存储介质及电子设备,提高多端点多总线的传输效率。
4.根据本公开的一个方面,提出总线仲裁的方法,包括:响应于请求者的请求,通过第一仲裁器对调度队列输出的第一请求进行仲裁,所述调度队列可以存储对应每一个从设备的第一请求,所述从设备可以是一个或多个,将仲裁后的第二请求存入请求队列,所述请求队列中的第二请求具有优先级排列,响应于请求队列中的第二请求传输至第二仲裁器,首先基于通道优先选定通道,其次基于所述选定的通道选出该通道对应的第三请求,最后总线基于各通道对应的第三请求选择该总线对应的第四请求。
5.在一些实施例中,所述方法还包括,所述第一仲裁器采用正序或反序仲裁保证同时选出至少两个所述第一请求。
6.在一些实施例中,所述方法还包括,所述第二请求的个数大于等于总线条数。
7.在一些实施例中,所述方法还包括,所述第二请求的个数小于总线条数。
8.在一些实施例中,所述方法还包括,多个所述第二请求对应不同从设备。
9.在一些实施例中,所述方法还包括,所述请求队列中的第二请求具有优先级排列,具体为越先进入请求队列优先级越高。
10.在一些实施例中,所述方法还包括,将所述仲裁后的第二请求存入请求队列,具体为一次将至少两个第二请求存入请求队列。
11.在一些实施例中,所述方法还包括,所述基于所述选定的通道选出该通道对应的第三请求,具体为:第1优先通道选择出最高优先级的第二请求,并将其作为第三请求,第n优先的通道选择出优先级为前n的第二请求,并判断与第n优先之前的通道选定的第三请求是否冲突,并按第二请求的优先级选择出第一个不冲突的第二请求,作为第n优先通道的第三请求;其中n》1。
12.根据本公开的另一个方面,提出一种总线仲裁的装置,包括:第一仲裁模块,用于响应于请求者的请求,通过第一仲裁器对调度队列输出的第一请求进行仲裁,所述调度队列可以存储对应每一个从设备的第一请求,所述从设备可以是一个或多个;第一存入模块,用于将仲裁后的第二请求存入请求队列,所述请求队列中的第二请求具有优先级排列;第二仲裁模块,用于响应于请求队列中的第二请求传输至第二仲裁器,首先基于通道优先选定通道,其次基于所述选定的通道选出该通道对应的第三请求,最后总线基于各通道对应的第三请求选择该总线对应的第四请求。
13.本技术实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于处理器进行加载,以执行如上任一实施例所述的一种总线仲裁的方法中的步骤。
14.本技术实施例还提供一种电子设备,所述电子设备包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器通过调用所述存储器中存储的所述计算机程序,执行如上任一实施例所述的总线仲裁的方法中的步骤。
15.本公开实施例提供的一种总线仲裁的方法、装置、存储介质及电子设备,在缓冲存储器和第二仲裁器之间设置请求队列,缓冲存储器中数据经第一次仲裁后存入请求队列中,然后将请求队列中的数据发送至第二仲裁器,经第二仲裁器仲裁后输出至对应总线。通过设置请求队列,每条通道的请求个数更少。且每条通道选出自己的请求不需要仲裁,从而提高多端点多总线的传输效率。
附图说明
16.下面结合附图,通过对本公开的具体实施方式详细描述,将使本公开的技术方案及其它有益效果显而易见。
17.图1为本技术实施例提供的一种总线仲裁方法示意图。
18.图2为本技术实施例提供的一种总线仲裁方式示意图。
19.图3为本技术实施例提供的另一种总线仲裁方式示意图。
20.图4为本技术实施例提供的一种仲裁器模块设计示意图。
21.图5为本技术实施例提供的一种数据传输流程示意图。
22.图6为本技术实施例提供的另一种数据传输流程示意图。
23.图7为本技术实施例提供的另一种仲裁器模块设计示意图。
24.图8为本技术实施例提供的一种总线仲裁装置示意图。
25.图9为本技术实施例提供的一种总线仲裁设备示意图。
具体实施方式
26.下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。本公开的说明书和权利要求书以及附图中的术语“包括”和“具有”以及它们的任何变形,意图在于覆盖不排它的包含。在本公开的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
27.以下将分别对本技术实施例提供的一种总线仲裁的方法、装置、存储介质及电子设备进行详细说明。需说明的是,以下实施例的序号不作为对实施例优选顺序的限定。
28.实施例一:具体地,请参阅图1,为本公开提供的一种总线仲裁方法。具体步骤如下:s1响应于请求者的请求,通过第一仲裁器对调度队列输出的第一请求进行仲裁,所述调度队列可以存储对应每一个从设备的第一请求,所述从设备可以是一个或多个。
29.s2将仲裁后的第二请求存入请求队列,所述请求队列中的第二请求具有优先级排列,s3响应于请求队列中的第二请求传输至第二仲裁器,首先基于通道优先选定通道,其次基于所述选定的通道选出该通道对应的第三请求,最后总线基于各通道对应的第三请求选择该总线对应的第四请求。
30.在一些实施例中,请求者一般是主设备可以是ram或ap,或者是其他形式的计算或存储单元,例如gpu,cpu,npu等,可以理解的是,上述设备也可以作为从设备。
31.为了便于说明,本公开以4组总线示例,可以理解的是本公开的技术方案并不局限于4组总线的情形,可以根据实际的应用场景灵活设置总线的组数。
32.为了实现多端点多处理器的总线仲裁,一种方式1是如图2所示,请求者m组ram group(ram_g1 ~ ram_gm)要传输数据到从设备2n个ap (application processor),这里使用了m组总线。因为单个ap 接收数据的带宽,是要小于整个总线传输数据的带宽的,往往一个ap一拍只能接收一个数据。所以m组总线上要避免同一拍同时向同一个ap发送数据。
33.每个缓冲存储器(以下简称“fifo”)都会传送一个请求(以下简称“req”)到仲裁器(以下简称“arbiter”)模块。若低优先级fifo的 req,和高优先级fifo的req都是发往同一个ap,因为ap无法同时接收,则低优先级fifo 的req只能暂时被挡住,不能发往总线。可以看到这样会浪费该条总线一拍传输数据的机会。
34.另一种方式2,如图3所示,用调度队列dispatch fifo(以下简称“fifo d_fifo”)代替。d_fifo对每一个ap都可以输出一个req到arbiter。这样当发往同一ap的低优先级的总线和高优先级总线有req冲突时,可以选择到其它ap的req,从而提高总线利用率。
35.在方式2中arbiter模块的设计如图4所示。其中的rr模块代表 round robin 仲裁。首先最高优先级lane仲裁选出自己的req输出,并且将这个req转化为mask 信号到次高优先级lane的mask 模块。这个mask模块将与第一个req相同的去除掉,然后经过rr模块选出自己的req。依次类推,选出每条lane的req。最后一个mask 会接收前面所有的mask 信号。该方式的缺点是,仲裁的逻辑深度也比较长并且每条lane的逻辑是串联的。导致 arbiter 中的组合逻辑特别长,很难在高时钟频率系统中一拍就算完。若是采用多拍算完,又会严重降低总线传输速率。
36.在一些实施例中,如图5所示在d_fifo 和 arbiter 之间插入请求队列request queue;里面有req1~req4 ,更高优先级lane的req有冲突时,可以有备选的req可以选出。在4条总线的情况下,request queue 模块存入4个不同的req,就能保证自己一定有req会被选出,这样最大限度保护总线的利用率。
37.在一些实施例中,request queue 中存入的req 个数 可以大于、等于、小于总线条数。request queue中req越多越有利于提高总线的利用率,request queue中req的数量
可以根据效率需求和设计复杂度取舍。
38.request queue 中存入的req均是发送到不同的ap的,这样能更大限度提高总线利用率。但若有到相同的ap 的req也可以,同样可以根据效率需求和设计复杂度取舍。
39.request queue 中存入的所有req,可以是带有优先级的,例如req1~req4 的优先级从高到底。在一些实施例中,先进入request queue 的req优先级更高。若采用无优先级模式和其它优先级模式也是可以的,本公开不做限定。
40.request queue 的设计可以保证后面arbiter设计组合逻辑深度更小的原因是:1.每条lane的req个数更少。2.每条lane选出自己的req不需要仲裁。因为req1~req4 已经有优先级排列,选出没有冲突的最高优先级req即可。
41.在一些实施例中,request queue中的req要尽可能多一些,同时d_fifo一次输入到request queue的req 个数尽量多一点。可以理解的是一次输入1个也基本满足了系统效率要求,当发生冲突时request queue中的req 没被取出,req个数就可以增加。但若一次输入2个以上可以更快填满request queue,对系统效率更好。
42.在一些实施例中,在d_fifo所有输出的req经过rr2仲裁选出2个req存入request queue 。rr2 可以是一种特殊设计的round robin 仲裁,例如同时采用正序、反序仲裁保证d_fifo中有两个以上不同的req的时候,能同时选出。
43.如图6所示,为便于提升存入request queue的输入速度,传给rr2 模块(即第一仲裁器)的d_fifo和ram_group可以是2个及其以上。
44.在一些实施例中,如图7所示第二仲裁器arbiter模块,将每一组request queue 中的req 传入到arbiter模块,首先会经过通道优先lane priority 选择 。每个priority都会有几bit表示选择的lane 。
45.在图7中,每个优先通道priority lane 都选择出了4个req。若request queue中保证有效req都是req1到req4排列的,则第一优先通道1st priority lane 只用选择出req1 ,第二优先通道2nd priority lane 只用选择出req1~req2,第三优先通道3nd priority lane 只用选择出req1~req3,第四优先通道4th priority lane 只用选择出req1~req4 。
46.1st priority lane,不需要判断是否和其它通道lane 冲突,直接选出自己的req。如图7中的req_1st。
47.2nd priority lane,先判断req1和 req_1st是否冲突。若不冲突选择req1,冲突选择req2作为req_2nd。
48.3rd priority lane,先判断req1~req3和 req_1st、req_2nd是否冲突。选择出第一个不冲突的req作为req_3rd 。
49.同样的方式4th priority lane选择出req_4th。
50.最后根据优先通道priority lane ,每条总线bus 从req_1streq_2ndreq_3rdreq_4th 中选择出自己的req,得到req_bus1req_bus2req_bus3req_bus4。 例如1st priority lane 选择了第二个 request queue,那么后面bus1 就选择 req_2nd。
51.在一些实施例中,若有固定优先级需求的通道lane,该 priority分配固定的lane。
52.若是lane之间优先级是均等的,其它priority 可以动态调整选择的lane。例如
priority lane可以采用轮询机制: 4 3 2 1
ꢀ‑
》 1 2 3 4
ꢀ‑
》 3 4 1 2
ꢀ……ꢀ
。总共24种排列,24次就能轮询一遍。
53.实施例二为实现上述目的,本实施例提出了一种总线仲裁的装置,请参阅图8,为本公开提供的一种总线仲裁的装置的结构示意图。装置800包括:第一仲裁模块801、第一存入模块802、第二仲裁模块803。
54.第一仲裁模块801,用于响应于请求者的请求,通过第一仲裁器对调度队列输出的第一请求进行仲裁,所述调度队列可以存储对应每一个从设备的第一请求,所述从设备可以是一个或多个;第一存入模块802,用于将仲裁后的第二请求存入请求队列,所述请求队列中的第二请求具有优先级排列;第二仲裁模块803,用于响应于请求队列中的第二请求传输至第二仲裁器,首先基于通道优先选定通道,其次基于所述选定的通道选出该通道对应的第三请求,最后总线基于各通道对应的第三请求选择该总线对应的第四请求。
55.实施例三相应的,本技术实施例还提供一种电子设备,该电子设备可以为终端或者服务器。如图9所示,图9为本技术实施例提供的电子设备的结构示意图。
56.该电子设备900包括有一个或者一个以上处理核心的处理器901、有一个或一个以上计算机可读存储介质的存储器902及存储在存储器902上并可在处理器上运行的计算机程序。其中,处理器901与存储器902电性连接。本领域技术人员可以理解,图中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
57.处理器901是电子设备900的控制中心,利用各种接口和线路连接整个电子设备900的各个部分,通过运行或加载存储在存储器902内的软件程序(计算机程序)和/或单元,以及调用存储在存储器902内的数据,执行电子设备900的各种功能和处理数据,从而对电子设备900进行整体监控。
58.在本技术实施例中,电子设备900中的处理器901会按照如下的步骤,将一个或一个以上的应用程序的进程对应的指令加载到存储器902中,并由处理器901来运行存储在存储器902中的应用程序,从而实现各种功能:响应于请求者的请求,通过第一仲裁器对调度队列输出的第一请求进行仲裁,所述调度队列可以存储对应每一个从设备的第一请求,所述从设备可以是一个或多个,将仲裁后的第二请求存入请求队列,所述请求队列中的第二请求具有优先级排列,响应于请求队列中的第二请求传输至第二仲裁器,首先基于通道优先选定通道,其次基于所述选定的通道选出该通道对应的第三请求,最后总线基于各通道对应的第三请求选择该总线对应的第四请求。
59.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
60.可选的,如图9所示,电子设备900还包括:仲裁模块903、通讯模块904、输入单元905以及电源906。其中,处理器901分别与仲裁模块903、通讯模块904、输入单元905以及电
源906电性连接。本领域技术人员可以理解,图9中示出的电子设备结构并不构成对电子设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
61.仲裁模块903可用于实现总线仲裁。
62.通信模块904可用于与其他设备通信。
63.输入单元905可用于接收输入的数字、字符信息或用户特征信息(例如指纹、虹膜、面部信息等),以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
64.电源906用于给电子设备900的各个部件供电。可选的,电源906可以通过电源管理系统与处理器901逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源906还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
65.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
66.实施例四本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
67.为此,本技术实施例提供一种计算机可读存储介质,其中存储有多条计算机程序,该计算机程序能够被处理器进行加载,以执行本技术实施例所提供的一种总线仲裁的方法中的步骤。例如,该计算机程序可以执行如下步骤:响应于请求者的请求,通过第一仲裁器对调度队列输出的第一请求进行仲裁,所述调度队列可以存储对应每一个从设备的第一请求,所述从设备可以是一个或多个,将仲裁后的第二请求存入请求队列,所述请求队列中的第二请求具有优先级排列,响应于请求队列中的第二请求传输至第二仲裁器,首先基于通道优先选定通道,其次基于所述选定的通道选出该通道对应的第三请求,最后总线基于各通道对应的第三请求选择该总线对应的第四请求。
68.以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
69.其中,该计算机可读存储介质可以包括:只读存储器(rom,read only memory)、随机存取记忆体(ram,random access memory)、磁盘或光盘等。
70.由于该存储介质中所存储的计算机程序,可以执行本技术实施例所提供的任一种总线仲裁方法中的步骤,因此,可以实现本技术实施例所提供的任一种一种总线仲裁方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
71.以上对本技术实施例所提供的一种总线仲裁方法、装置、计算机可读存储介质及电子设备进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本技术的方法及其核心思想;同时,对于本领域的技术人员,依据本技术的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本技术的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1