片上数据交换的滚轮仲裁方法及电路

文档序号:168638 发布日期:2021-10-29 浏览:37次 >En<

阅读说明:本技术 片上数据交换的滚轮仲裁方法及电路 (Roller arbitration method and circuit for on-chip data exchange ) 是由 王东辉 赵鹏 常亮 桑永奇 李甲 姚飞 于 2021-07-29 设计创作,主要内容包括:本发明公开了一种片上数据交换的滚轮仲裁方法,基于N输入端口N输出端口的的NxN交叉网络,包括以下步骤:S1、确定优先仲裁排列;S2、判断排列中各预期传输对是否有传输需求,是则确定为实际传输对,确定的实际传输对立即进行数据传输;否则认定为非传输对;S3、进行顺序的行/列或列/行仲裁,选择优先级高的交换点作为实际传输对;S4、步骤S3轮询完毕后,优先仲裁排列滚动获得新的仲裁排列;S5、循环进行S2-S4。此种方法可以提高片上数据交换效率和速度,特别适合人工智能和大数据处理芯片,尤其是SIMT架构的芯片。此种方法属于芯片设计、片上网络、片上系统、和计算机体系结构。(The invention discloses a roller arbitration method for on-chip data exchange, which is an NxN cross network based on N input ports and N output ports and comprises the following steps: s1, determining priority arbitration arrangement; s2, judging whether each expected transmission pair in the arrangement has a transmission requirement, if so, determining the transmission pair as an actual transmission pair, and performing data transmission on the determined actual transmission pair; otherwise, the transmission is determined as a non-transmission pair; s3, performing sequential row/column or column/row arbitration, and selecting the switching point with high priority as the actual transmission pair; s4, after the polling is finished in the step S3, the priority arbitration arrangement rolls to obtain a new arbitration arrangement; and S5, circulating S2-S4. The method can improve the efficiency and speed of on-chip data exchange, and is particularly suitable for artificial intelligence and large data processing chips, especially chips with SIMT architecture. This method belongs to chip design, network on chip, system on chip, and computer architecture.)

片上数据交换的滚轮仲裁方法及电路

技术领域

本发明涉及芯片设计、片上网络、片上系统、和计算机体系结构领域,尤其是一种片上数据交换网络的滚轮调度方法和电路实现。此种方法可以提高片上数据交换效率和速度,特别适合人工智能和大数据处理芯片,尤其是SIMT架构的芯片。

背景技术

机器学习、科学计算和图形渲染需要巨大的计算能力,一般由大型芯片(如GPU、TPU、APU等)提供这样的算力,来实现高度复杂的机器学习任务和图形处理任务。用机器学习来做识别需要巨大的深度(Deep Learning)网络和海量的图像数据,训练过程非常耗时;一个三维应用或游戏场景中,若采用递归光追踪(Recursive Ray-Tracing)渲染,且场景复杂,则需要做海量运算,也需要传递海量数据。这就要求极高的计算性能,也因此需要极宽的数据交换带宽来支持这样的需求。高性能的片上交换器就成了AI和GPU芯片的重要组成部件。

对于AI和图形计算这类特定场景,片上缓存和数据交换的仲裁方法非常重要。效率低的仲裁(arbitration)方法和仲裁器(arbiter)设计会成为系统的瓶颈,极大影响系统的性能。因此,仲裁方法和仲裁器电路必须实现高性能和低复杂度。

网络交换器中的仲裁方法研究有悠久的历史,特别是在互联网快速发展阶段的研究成果众多。Jonathan Chao的著作《High Performance Switches and Routers》(Wiley-IEEE Press,2007)和George Varghese的著作《Network Algorithmics,:AnInterdisciplinary Approach to Designing Fast Networked Devices》(MorganKaufmann,2004)对这些做了综述和各种方法的叙述。虚拟输出排队(Virtual OutputQueue-VOQ)交换器是典型的数据交换方式,这方面的研究成果颇丰。

这方面的重要成果包括PIM、RRM、iSLIP、DRRM以及GA这几类方法。

其中,PIM由于每次选择是随机的,且需要三个步骤,存在公平性和复杂性的问题。

而RRM和iSLIP采用优先级轮询仲裁比随机仲裁逻辑更简单,iSLIP又对grant指针跳转条件做了改进,公平性有了改善,但还是需要三个步骤,使得同样存在复杂性问题,很难实现高速电路。

DRRM在输入和输出有两个独立的轮询仲裁机制执仲裁,比iSLIP方案的仲裁时间更短,同时实现了和iSLIP相当的性能;GA则在DRRM的基础上将输出端口的Grant信息给输入端口,虽然提高了仲裁效率但复杂性比DRRM增加了更多。由于复杂度随着端口增加而指数增长(N3logN),DDRM和GA随着端口增加很难在高速电路上实现两次以上的迭代仲裁。

发明内容

本发明针对背景技术中存在的问题,提出了一种片上数据交换网络的滚轮调度方法和电路实现。

本发明首先公开了一种片上数据交换的滚轮仲裁方法,基于N输入端口N输出端口的的NxN交叉网络,1个输入端口对应的所有输出端口为一行,1个输出端口对应的所有输入端口为一列,每个输入输出交换点为一个传输对;它包括以下步骤:

S1、确定优先仲裁排列WVOQ={VOQ[0,a],VOQ[1,b],VOQ[2,c],…,VOQ[N-1,x]},a、b、c…x∈[0,N-1]且互不相同;优先仲裁排列WVOQ中的N个元素表示N个预期传输对,其中:VOQ[0,a]表示预期输入端口为PI0,预期输出端口为PO a的预期传输对;非优先仲裁排列WVOQ中的传输对为非预期传输对;

S2、判断排列中各预期传输对是否有传输需求,是则确定为实际传输对,确定的实际传输对即可进行数据传输;

S3、对于非预期传输对的交换点,首先进行每个输出端口的列仲裁或所处输入端口的列仲裁,获取可能的实际传输对;再针对可能的实际传输对进行行仲裁或列仲裁,选择优先级高的非预期传输对作为实际传输对;

S4、步骤S3轮询完毕后,满足一定条件时,优先仲裁排列WVOQ滚动获得新的仲裁排列W'VOQ;否则滚轮保持不动;

S5、循环进行S2-S4。

优选的,S1中,确定优先仲裁排列WVOQ={VOQ[0,0],VOQ[1,1],VOQ[2,2],…,VOQ[N-1,N-1]}。

优选的,S2和S3中,对于burst传输应用,在确定为实际传输对前,需要确认该传输对上没有未完成的传输。

优选的,S2和S3中,确定为实际传输对后,对实际传输对所处的行和列进行清除,不再参与下次传输需求仲裁。

优选的,S4中,所述滚动条件为每个有请求的预期传输对都被确认过实际传输对。

作为一种滚轮滚动方式,S4中,所述滚动为所有的预期输入端口不变,所有的预期输出端口+n,n的取值需保证滚轮循环滚动时,覆盖所有的传输对。

作为另一种滚轮滚动方式,S4中,所述滚动为所有的预期输出端口不变,所有的预期输入端口+n,n的取值需保证滚轮循环滚动时,覆盖所有的传输对。

本发明还公开了一种片上数据交换的滚轮仲裁电路,基于N输入端口N输出端口的的NxN交叉网络,它包括:

-滚动点选择电路,用于确定NxN交叉网络中的优先仲裁排列WVOQ={VOQ[0,a],VOQ[1,b],VOQ[2,c],…,VOQ[N-1,x]},以及优先仲裁排列WVOQ的滚动更新;

-期望点匹配电路,用于判断排列中各预期传输对是否有传输需求,将有传输需求的标记为实际传输对,无传输需求的标记为非传输对;

-行列轮询仲裁电路,用于进行交换点所处列的列仲裁或所处行的行仲裁,获取可能的实际传输对;再针对可能的实际传输对进行行仲裁或列仲裁,选择优先级高的交换点作为实际传输对。

优选的,它还包括:

-行列清除电路,NxN交叉网络的每一个交换点设置一个清除逻辑,用于预期传输对确定实际传输对后,禁止匹配点所处的行和列再参与传输需求仲裁。

具体的,滚动点选择电路:NxN交叉网络的每一行、每一列各设置1个k位的寄存器,k=ceiling(N),行/列的寄存器顺序移动寄存值实现滚动。

具体的,期望点匹配电路:NxN交叉网络的每一个交换点设置比较器,通过交换点所属的行寄存器与列寄存器的值比较,判断交换点是否为期望点。

具体的,行列轮询仲裁电路:NxN交叉网络的每一行、每一列都设置一个arbiter,每个arbiter有一个优先级指针通过滚轮的跳转而滚动。

本发明的有益效果

本申请提出了一种片上数据交换网络的滚轮调度方法和电路实现,基于滚动调度实现了各交换点数据传输机会的公平。基于初次列/行轮询保障了各交换点仲裁的遍历;基于再次行/列轮询保障了各输入-输出的唯一,避免冲突。基于传输对确定后,交换点所属行列的清除,既保障了各输入-输出的唯一;又减少了仲裁冲突和次数,提高了传输效率。基于滚轮优先级调度算法,避免了对滚轮上的预传输对做仲裁,只需判断滚轮上的预期传输对是否存在传输请求。判断逻辑简单,仲裁时间更短,易于实现高速电路,尤其在对时序要求比较严苛的高速电路中优势尤为明显,在我们芯片上轻松实现两次迭代。

附图说明

图1为NxN的交叉网络路由结构示意图

图2为代表优先权的滚轮示意图

图3为行列选择清除示意图

图4为滚轮的移动示意图

图5a为以FIFO方式实现VOQ电路的示意图

图5b为以管理链表指针方式实现VOQ电路的示意图

图6a为滚轮点选择电路示意图

图6b为滚动点选择电路中寄存器行(列)递增更新示意图

图7为期望点匹配电路示意图

图8为滚轮pattern示意图

图9为行列轮询仲裁电路示例图

图10为构成PIM调度算法的一次迭代的三个步骤的示例图

图11为构成RRM调度算法的一次迭代的三个步骤的示例图

图12为iSLIP算法的示例图

图13为DRRM算法的示例图

图14为GA算法的示例图

具体实施方式

下面结合实施例对本发明作进一步说明,但本发明的保护范围不限于此:

图1给出了NxN的交叉网络路由结构:I0,I1,……,IN-1与O0,O1,……,ON-1的每个交叉点都是一条路由路径,也称为一个传输对。每个交叉点为一个VOQij请求路径,VOQ的下标第一个数字表示输入端口编号,第二个数字表示输出端口编号。每个输入端口Ii在一个周期只能有一个路由节点被选中,同样每个输出端口在一个周期也只能有一个路由节点被选中。一个周期最多有N条路径被选中。

为确保每个输入端口实现公平仲裁,每个输入端口获得尽可能均等的数据传输量,每个输入端口的每个虚拟输出排队VOQ获得尽可能均等的数据传输量,本发明公开了一种片上数据交换的滚轮仲裁方法,包括以下步骤:

S1、确定优先仲裁排列WVOQ={VOQ[0,a],VOQ[1,b],VOQ[2,c],…,VOQ[N-1,x]},a、b、c…x∈[0,N-1]且互不相同;优先仲裁排列WVOQ中的N个元素表示N个预期传输对,其中:VOQ[0,a]表示预期输入端口为PI0,预期输出端口为PO a的预期传输对;非优先仲裁排列WVOQ中的传输对为非预期传输对;

结合图8,在某一时刻,滚轮代表了对于每个输入端口的预期输出端口,N个输入端口就有N个预期的输出端口。这N个预期的端口都是不同的,也就是{0,1,2,…,N-1}的某个排列(permutation),一种排列成为一个pattern,一共有N!个parttern。初始化时,可以直接使用{0,1,2,…,N-1},也就是说输入端口PI0预期输出端口PO0,输入端口PI1预期输出端口PO1,…,输入端口PIN-1预期输出端口PON-1。我们将这一排列记作W={(0,0),(1,1),(2,2),…,(N,N)},如图2中小六边形空心节点所示(本实施例中,a=1,b=2,c=3,……,x=N-1)。

S2、判断排列中各预期传输对是否有传输需求,是则确定为实际传输对,确定的实际传输对即可进行数据传输;

假定在t时刻W(t)={(0,(t+0)%N),(1,(t+1)%N),(2,(t+2)%N),…,(N-1,(t+N-1)%N)},这个对应具有最高优先权的队列。也就是说,如果输入端口i有给输出端口ji的请求,则这个请求必须被准许。根据控制根据不同的输入输出之间对应关系,可以选择不同的pattern,并在这些parttern之间滚动循环以达到公平性。

优选的实施例中,确定实际传输对后,对实际传输对所处的行和列进行清除,不再参与传输需求仲裁。结合图3所示,pattern种一个节点在VOQ10(小六边形实心节点)上,如果这个VOQ10有请求,那么这个节点路由会被选中。同时,节点所在的行的其他节点,也就是输入端口I1的其它所有输出节点(小六边形空心节点)的请求VOQ11,VOQ12,……,VOQ1N-1,和节点所在的列,也就是输出O0的所有输入节点(黄色小六边形节点)的请求VOQ00,VOQ20,……,VOQN-10,都会被清除,而不会参与S3的行列仲裁,这样可以提高第二次行列仲裁的效率。

优选的实施例中,以上内容可通过以下代码实现:

S3、对于非预期传输对的交换点,首先进行每个输出端口的列仲裁或所处输入端口的列仲裁,获取可能的实际传输对;再针对可能的实际传输对进行行仲裁或列仲裁,选择优先级高的非预期传输对作为实际传输对;

优选的实施例中,S3步骤通过以下代码实现:

最后,VOQ[i,ti].stat==true或者VOQ[i,j].row==true点就是仲裁成功的VOQ;这些VOQ上的数据可以立即传输,同时将突发计数器减一(VOQ[i,ti].cn--或者VOQ[i,j].cnt--)。

在S2和S3中,对于单周期长度的传输应用,各预期传输对有传输需求时,直接认定为实际传输对并进行数据传输。对于多周期长度的传输应用(如burst传输应用),在确定为实际传输对前,需要确认该传输对上没有未完成的传输。

S4、步骤S3轮询完毕后,这里可以设置一些条件,满足条件后,优先仲裁排列WVOQ滚动获得新的仲裁排列W'VOQ;这个条件可以是:保证有请求的预期传输对都被确定过是实际传输对,也就是每个有请求的预期传输对都有过至少一次传输。这个条件可以保证无饥饿性和公平性,其他条件则也需要考虑这两个特性。

结合图4,滚轮需要在一组pattern之间做循环滚动。如图4所示示例,对角线上的空心小六边形节点(VOQ00,VOQ11,……,VOQN-1N-1)是滚轮滚动前的pattern,黑色实心小六边形节点(VOQ10,VOQ21,……,VOQN-1N-2,VOQ0N-1)是滚轮一次滚动循环后的pattern。其他pattern之间的滚动类似,可以根据预设的滚动模式+n滚动,n的取值需保证滚轮循环滚动时,覆盖所有的传输对(对于N*N的交叉网络路由结构,以N为奇数为例,n取值为2亦能满足完全覆盖要求)。

优选的实施例中,S4步骤通过以下代码实现:

S5、循环进行S2-S4。

本发明还提出了一种片上数据交换的滚轮仲裁电路,基于N输入端口N输出端口的的NxN交叉网络,VOQ电路的实现分为两种方式:一种是如图5a所示FIFO方式,根据输入I_s的目的地址信息将VOQ路由请求分别路由到对应的输出端口的FIFO,这种实现方式简单,但比较耗费硬件资源;另一种方式是如图5b所示通过链表管理的方式实现VOQ:将输入存储在一组链表中,通过管理链表指针来管理VOQ信息。每一个输入端口包含了一个队列长度为M的指针寄存器队列,一个队列长度为N的头指针和尾指针,一个宽度为N的有效请求。其中M是能接收存储的最大请求个数,N是请求目标端口的个数。相对于FIFO的实现方式电路面积更小,使用更少的硬件资源。

滚轮仲裁电路还包括:

-滚动点选择电路,用于确定NxN交叉网络中的优先仲裁排列WVOQ={VOQ[0,a],VOQ[1,b],VOQ[2,c],…,VOQ[N-1,x]},以及优先仲裁排列WVOQ的滚动更新;

优选的实施例中,滚动点选择电路为:NxN交叉网络的每一行、每一列各设置1个k位的寄存器,k=ceiling(N),一行的寄存器可以顺序移动寄存的值,一列的寄存器也可以顺序移动寄存值。行寄存器记作R[0],R[1],…,R[N-1]。列寄存器记作C[0],C[1],…,C[N-1]。初始化时,R[0]=0,R[1]=1,…,R[N-1]=N-1,C[0]=0,C[1]=1,…,C[N-1]=N-1。每次滚动时,C[0]=C[N-1],C[N-1]=C[N-2],C[N-2]=C[N-3],…,C[2]=C[1],C[1]=C[0],而R[N-1],…,R[0]保持不变。

结合图6a,给出了一个示例pattern,每个结点的行列分别互斥。pattern每个节点都有一个路由节点编号。结合图6b,是每个pattern按照行(列)递增的方式,完成对应列(行)的节点更新,列(行)预选选定被存在寄存器中。

-期望点匹配电路,用于判断排列中各预期传输对是否有传输需求,将有传输需求的标记为实际传输对,无传输需求的标记为非传输对;

优选的实施例中,期望点匹配电路为:NxN交叉网络的每一个交换点设置比较器,通过交换点所属的行寄存器与列寄存器的值比较,判断交换点是否为期望点。

结合图7,Pattern上的每一个节点都会输出一个行列路由编号,当这个编号和VOQ的路由编号相等时即pattern的节点上有对应的VOQ请求时即期望点匹配。将当前pattern所有节点遍历判断就找出滚轮上期望匹配点。

-行列轮询仲裁电路,用于进行交换点所处列的列仲裁或所处行的行仲裁,获取可能的实际传输对;再针对可能的实际传输对进行行仲裁或列仲裁,选择优先级高的交换点作为实际传输对。

图9是较完整的滚轮仲裁电路结构图。当做完滚轮上的期望点匹配后,按照图中所示在行和列两个方向上做两次仲裁就可以完成行列轮询仲裁(列循环的结果不能保证每一列仲裁的行都不相同。因此,需要行轮循电路把列轮循的结果再做一次仲裁,使得最终的结果每行和每列中最多只有一个选中的点,不会产生数据传输的冲突),完成一个周期内的所有通路路由仲裁。图9中每一行每一列都有一个arbiter,每个arbiter有一个优先级指针通过滚轮的跳转而滚动在图中可以通过移位寄存器实现。

优选的实施例中,它还包括:

-行列清除电路,NxN交叉网络的每一个交换点设置一个清除逻辑,用于输入端口确定实际传输对后,禁止匹配点所处的行和列参与传输需求仲裁。实现方案为:在输入端口本地将这些VOQ的标记排除。

对比现有的CrossBar的仲裁算法

目前大多数调度算法都是最大化每次仲裁的连接通路,从而实现最大化带宽,但是这些算法过于复杂,且复杂度随着端口增加而指数增长(N3logN)无法在硬件中实现,而且需要很长时间才能完成。现在一般的CrossBar都基于迭代或者非迭代的循环算法。比较经典的算法有FIFO,PIM,iSLIP、DRRM和GA算法等。基于这些算法分析滚轮仲裁算法和这些算法之间的区别和优势。

一、VOQ引进

早期的输入端口采用FIFO排队方式等待仲裁分配,这种基于FIFO的仲裁调度,这种方式最大的输入吞吐量仅为58.6%,后期经过演进提出VOQ的方式,将吞吐率提高到100%,为每次都能找到最大匹配项提供条件。VOQ的实现方式上,我们采用链表管理的方式实现,最大化节省了硬件资源。这种实现方式在具有高延迟的大型网络路由上的优势更加明显。

二、PIM算法

PIM是指ParallelmatIterarion Matching算法,具体分为三步,如图10,这是构成PIM调度算法的一次迭代的三个步骤的一个示例。

步骤1:Request,每个输入对其具有单元格的每个输出发出请求;

步骤2:Grant,每个输出一致地从请求它的输入中随机选择一个输入。在本例中,输入1和3都请求输出2。输出2选择授予输入3;

步骤3:Accept,每个输入在被授予的输出中随机地选择一个输出。在本例中,输出2和4都被授予输入3。输入3选择接受输出2。

在本例中,第一次迭代不匹配输入4和输出4,即使它与其他连接没有冲突。这个连接将在第二次迭代中建立。

PIM算法的三个特征:

第一,每次迭代过程都能选出之前迭代未匹配部分,因此完成最大匹配的迭代次数需要logN;

第二,它确保所有请求最终都会被批准,没有输入VOQ不会被仲裁到;

第三,它意味着不使用内存或状态来跟踪在过去建立连接的时间。

PIM算法的性能:因为在PIM的仲裁过程中都是随机的,所以有下面几个限制:

首先,它是随机仲裁,不利于实现高速;每个仲裁程序必须在的所有备选成员之间进行随机选择;

其次,当CrossBar超负荷时,PIM会导致连接之间的不公平;

最后,PIM在单次迭代中表现不佳;它将吞吐量限制在大约63%,仅略高于FIFO交换机。所以在传输Crossbar请求传输超负荷时,效率只有1-1/e=63%。

三、RRM算法

RRM是指Basic Round-Robin Matching算法。RRM算法同样分为三步:如图11所示,这是构成RRM调度算法的一次迭代的三个步骤的一个示例。

RRM潜在地克服了PIM中的两个问题:复杂性和不公平性。作为优先级编码器实现的轮询仲裁程序要比随机仲裁程序简单得多,执行速度也更快。Round优先级有助于算法在请求连接之间公平、更公平地分配带宽。仲裁的三个步骤是:

步骤1:Request,每个输入在其有排队VOQ的每个输出发送一个请求。

步骤2:Grant,如果输出接收到任何请求,它将选择从最高优先级元素开始的一个固定的roundrobin调度中的下一个请求。无论请求是否被批准,输出都会通知每个输入。输出的指针对循环调度的最高优先级元素进行递增。

步骤3:Accept。如果一个输入接收到一个授权,它将接受从最高优先级元素开始的一个固定的循环调度中的下一个。循环调度中最高优先级元素的指针将递增(除接受的输出外的一个单元)。

RRM性能分析

对于仅提供63%RRM的负载,RRM将变得不稳定。RRM性能差的原因在于更新输出仲裁器上指针的规则。我们用上图所示的例子来说明这一点。输入1和2都处于高负载下,并且在每个周期时间内为两个输出接收一个新单元。但是因为输出调度器是在锁定优先级中移动的,所以在每个计算单元时间内只提供一个输入。注意,grant指针在锁定优先级中变化:在单元时间1中,两者都指向输入1,在单元时间2中,两者都指向输入2,等等。这种同步现象导致此流量模式的最大吞吐量仅为50%。grant指针的同步也限制了随机到达模式的性能。

四、iSLIP算法

iSLIP算法使用旋转优先级(“Round”)仲裁来依次调度每个输入和输出。主要特点是简单;它易于在硬件上实现,并且可以高速运行。研究发现,均匀交通条件下的性能较高;对于一致独立同分布伯努利到达,单次迭代iSLIP可实现100%的吞吐量。仔细对比就会发现,其实iSLIP是简单基本循环匹配算法(RRM)的一种变体。RRM可能是最简单和最重要的。

图12给出了一个iSLIP的示例。

相对于RRM,iSLIP主要做了下面的改动:除非接受授予,否则不移动授予指针。更新grant指针。iSLIP的Grant步骤改为:

步骤2:Grant,如果输出接收到任何请求,它将从优先级最高的元素开始,选择在固定的循环调度中出现的下一个请求。无论请求是否被批准,输出都会通知每个输入的指针。对循环调度的最高优先级元素进行递增。对算法的这个小更改导致以下结果:

特性1:最近建立的连接具有最低优先级。这是因为当仲裁程序移动指针时,最近被授予(接受)的输入(输出)成为该输出(输入)的最低优先级。如果输入优先连接在下一次计算单元时间。

特性2:没有连接中断。这是因为输入将继续请求输出,直到成功为止。在最多的单元格时间内被每个输入接受。因此,一个请求输入总是在少于计算单元的时间内提供服务。

特性3:在高负载下,所有具有公共输出的队列具有相同的吞吐量。这是特性2的结果,输出指针按固定顺序移动到每个请求输入,从而为每个请求提供相同的吞吐量。

但是最重要的是,这个小的变化阻止了输出仲裁器的同步移动,从而导致性能的巨大改进。

五、DRRM算法

DRRM是Double Rounb-Robin Matching。因为在输入和输出是两个独立的轮询仲裁机制执仲裁,所以称之为DRRM(Dual Round Robin Matching)。

在每个输入端口都有一个request仲裁器和N个VOQ,请求仲裁器根据指针值最多选择一个非空队列,表示最高优先级的输出端口。在每个输出端口也有一个grant仲裁器,在N个请求中仲裁出来一个输入端口,然后将这个结果发给输入端口,如果grant接收到一个请求那么它将更新指针值,而对应的请求仲裁器也将更新指针值。

图13显示了一个DRRM算法的一个示例:

DRRM算法包括两个阶段:

步骤1:Request,每个输入在轮询调度中的请求仲裁出一个请求;

步骤2:Grant,每个输出在本端口的所有请求中仲裁出一个输入。

DDRM方案比iSLIP方案的仲裁时间更短,同时实现了和iSLIP相当的性能。

六、GA算法

GA算法即Grant-Aware Scheduling Algorithm for VOQ-Based Input-BufferedPacket Switches。如图14所示,这种仲裁算法是将DRRM算法在一个周期内迭代了多次来实现最大仲裁效率,每次迭代将输出端口仲裁结果告知输入端口。效率有提高,但复杂性比DRRM更大,对于稍微大一点的路由仲裁(N>=8),两次以上的迭代就已经很难在高速电路上实现,原因在于每次迭代都相当于重新做一次DRRM。

七、滚轮仲裁算法(本申请)

本专利提出的滚轮仲裁算法的最大优点是先采用滚轮优先仲裁,再采用DDRM仲裁算法。实现了在一个周期内完成两次仲裁,其中第一次仲裁按照滚轮优先原则,判断滚轮节点上是否有请求即可完成仲裁,硬件电路非常容易实现,为第二次仲裁节省了大量时间。第二次仲裁是在过滤掉第一次仲裁节点基础上,按照DRRM的算法,做第二次仲裁。

相比于PIM,RRM,iSLIP,DDRM,GA算法,滚轮优先级算法优势在于,具有更简单直接且容易实现的特点。现在的高速电路设计中很难在一个时钟周期内完成PIM,RRM,iSLIP,DDRM,GA这几个算法的二次以上的迭代仲裁,这几个算法每次迭代都需要对输入输出端口的仲裁优先级做逻辑处理,而滚轮优先级算法的输入输出端口的仲裁优先级是pattern结构,独立于仲裁逻辑判断,给仲裁判断留下了充裕的时间,因此能够在一个时钟周期内实现更多的迭代次数。相比其他在一个时钟周期实现一次迭代的效率63%高出23%,而能达到86%的效率。在AIGPU芯片上已经实现。

由于滚轮是用户按照数据路由特征选定的pattern,实际应用中仲裁时间会比GA短很多,可以实现更多次迭代而提高仲裁效率。

本文中所描述的具体实施例仅仅是对本发明精神做举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

24页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:数据传输方法、装置、电子设备及存储介质

网友询问留言

已有0条留言

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

精彩留言,会给你点赞!