仲裁方法和仲裁器的制作方法

文档序号:7662232阅读:308来源:国知局
专利名称:仲裁方法和仲裁器的制作方法
技术领域
本发明涉及仲裁方法和仲裁器。
背景技术
交叉连接矩阵(crossbar)是一种将输入端口和输出端口互联的交换结构, 仲裁是将尽量多的输入端口和输出端口匹配,分为集中式仲裁和分布式仲裁 集中式仲裁有一个中央仲裁器,受理所有输入端口向输出端口的请求,按优 先或公平原则发出授权信号。分布式仲裁不需要中央仲裁器,每个输入端口 都有自己的仲裁号和仲裁器,通过分配优先级仲裁号,获得输出端口的响应。
波阵(Wave Front)仲裁器是一种集中式仲裁器,可以在一个时钟周期内 仲裁多个请求,获得多个输入端口向输出端口请求间的最大匹配。在申请号 为200510034923.X的中国发明专利申请中可以找到有关波阵仲裁器的信息。
图l是一个七个输入端口和七个输出端口构成7x7波阵仲裁器的仲裁单元 阵列的结构原理图,图中的仲裁单元阵列为格栅式和冗余式排列, 一个方框 表示一个仲裁单元,每个方框用(x, y)标识,称之为仲裁单元(x, y), 其中,x表示输入端口, y表示输出端口,仲裁单元(x, y)对输入端口x能否 向输出端口y发送消息进行仲裁,例如,仲裁单元(6, 1)表示对输入端口6 向输出端口l发送消息的请求进行仲裁的仲裁单元。另外,为了便于说明,下 面都以请求(x, y)表示输入端口x向输出端口y发送消息的端口请求。
图l中,虚线上的仲裁单元具有相同的优先级,称之为优先级组,在任何 一个优先级组上的仲裁单元的输入端口和输出端口都互不相同,可以同时被 选中而不会出现冲突。优先级指针所指向的优先级组为仲裁的最高优先级组, 例如,图l中的优先级指针为PriorPtl,其指向的优先级组wl具有最高的优先级,当开始仲裁时,首先仲裁最高优先级组wl,然后仲裁次一级优先级组w2,以此类推,像波紋(wave) —样向下一级优先级组传递。为了达到公平性的要求,最高优先级组也不是固定的,也要向波紋一样传递,图l中的优先级指针为PriorPtl、最高优先级组是wl,那么下次仲裁时,优先级指针加l变为
PriorPt2、最高优先级组就变为w2,......,当优先级指针为PriorPt6、最高优先
级组是w6时,下次仲裁的优先级指针变为PriorPtO、最高优先级组就回到w0。这种将优先级指针轮流指向优先级组的方式通常称为"顺序轮转方式"。
波阵仲裁的基本规则是在每一行、每一列有且仅有一个仲裁单元被选中,举例来说,图l中,如果仲裁单元(l, O)被选中,那么与仲裁单元(l, 0)同一行、同一列的其他仲裁单元(1, y)和仲裁单元(x, 0)都不能被选中;当波紋移动到优先级组w2时,如果仲裁单元(l, O)和仲裁单元(O, l)都没有被选中,那么仲裁单元(l, l)才可能被选中。 一个仲裁单元被选中还需要两个条件, 一个是这个仲裁单元对应的输入端口有发消息的请求,另一个是这个仲裁单元对应的输出端口处于空闲状态。当一个仲裁单元(x, y)被选中,仲裁器发出仲裁响应给输入端口x,输入端口x在获得仲裁响应后向输出端口y发送消息。
波阵仲裁器是根据相邻单元之间的信息传播来仲裁,这种结构特性决定了只有当每个端口都被充分利用时,各个端口的公平性才能得以保证,公平性是指在一段足够长的时间内,多个输入端口能够向同 一个输出端口发送消息的次数几乎相等,或者一个输入端口能够向多个输出端口发送消息的次数几乎相等。
然而,在端口没有全部被配置的情况下,不公平性的问题就会变得明显,举例来说,参考图l,在每个仲裁器的工作时钟周期内,仲裁器对输入端口的请求进行一次仲裁
(1)第一次仲裁,优先级指针为PriorPtl,有请求(1,0)、请求(2, 0)、请求(3, 5)和请求(4, 2),仲裁后,请求(1, 0)、请求(3, 5)、请求(4、 2)获得仲裁响应,输入端口1向输出端口0发送消息,输入端口3向输出端口5发送消息,输入端口4向输出端口2发送消息;请求(2, O)因请求(l,0)获得仲裁响应而不能获得仲裁响应。
(2) 第二次仲裁,优先级指针变为PriorPt2,有请求(2, 0)、请求(0,3)和请求(5, 0),仲裁后,请求(0, 3)获得仲裁响应,输入端口0向输出端口 3发送消息;由于输入端口 1向输出端口 0发送消息的时间会比仲裁的工作时钟周期长,请求(2, 0)、请求(5, 0)因输出端口0处于忙状态(接收输入端口l发送的消息)而不能获得仲裁响应。
(3) 第三次仲裁,优先级指针变为PriorPt3,请求(2, 0)、请求(5, 0)仍因输出端口 0处于忙状态而不能获得仲裁响应。
(4) 第四次仲裁,优先级指针变为PriorPt4,输入端口 l向输出端口 0发送消息完成,仲裁后,请求(5, O)获得仲裁响应,输入端口5向输出端口0发送消息;请求(2, 0)因请求(5, 0)获得仲裁响应而不能获得仲裁响应。
(5)当优先级指针回到PriorPtl,输入端口 5向输出端口 0发送消息完成,又有请求(1, 0),仲裁后,请求(1, 0)获得仲裁响应,请求(2, 0)仍然无法获得仲裁响应。
最严重的情况是,在很长的一段时间内,某些输入端口的请求始终不能获得仲裁响应,无法将消息发送到输出端口,也就是通常所说的"饥饿"现象。例如上述实例中(1)至(5)的情况重复发生,输入端口l、输入端口5的请求会交替获得输出端口 0的响应,输入端口 2向输出端口 0的请求始终无法获得仲裁响应,并且其他输入端口向输出端口 O的请求也无法获得仲裁响应。

发明内容
9本发明提供一种仲裁方法和仲裁器,以解决波阵仲裁中存在的"饥饿" 问题,改善仲裁性能。
为解决上述问题,本发明提供一种仲裁方法,包括下述步骤根据年龄 超时的端口请求设置有效的端口请求;根据端口请求的年龄设置优先级指针; 根据所述优先级指针对有效的端口请求进行仲裁,所述端口请求的年龄是端 口请求等待仲裁响应的时间,所述年龄超时是端口请求的年龄超过年龄阈值。
可选的,所述根据年龄超时的端口请求设置有效的端口请求包括下述步 骤对于有年龄超时的端口请求的输入端口,仅将所述输入端口的年龄超时 的端口请求设置为有效的端口请求;对于没有年龄超时的端口请求的输入端 口 ,将所述输入端口的所有端口请求设置为有效的端口请求。
可选的,所述根据端口请求的年龄设置优先级指针包括下述步骤将优 先级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先级组。
可选的,所述根据端口请求的年龄设置优先级指针包括下述步骤 若最大年龄方式没有超时,采用最大年龄方式,所述最大年龄方式是将优先 级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先级组;若最大 年龄方式超时,采用顺序轮转方式,所述顺序轮转方式是将优先级指针轮流 指向各优先级组,所述最大年龄方式超时是指釆用最大年龄方式的时间超过 了最大年龄方式阈值。
可选的,所述根据端口请求的年龄设置优先级指针包括下述步骤若最 大年龄方式没有超时或者顺序轮转方式超时,采用最大年龄方式,所述最大 年龄方式是将优先级指针指向与年龄最大的端口请求对应的仲裁单元所在的 优先级组;若最大年龄方式超时并且顺序轮转方式没有超时,采用顺序轮转 方式设置仲裁的优先级指针,所述顺序轮转方式是将优先级指针轮流指向各 优先级组,所述最大年龄方式超时是指采用最大年龄方式的时间超过了最大 年龄方式阈值,所述顺序轮转方式超时是指釆用顺序轮转方式的时间超过了
10顺序轮转方式阈值。
可选的,所述根据端口请求的年龄设置所述仲裁的优先级指针包括下述
步骤根据预先设定的指针设置模式,设置仲裁的优先级指针,所述指针设 置模式包括年龄设置模式、年龄轮转设置模式和交替设置模式或者其中的两 两结合,其中,
所述年龄设置模式的设置优先级指针包括将优先级指针指向与年龄最 大的端口请求对应的仲裁单元所在的优先级组;
所述年龄轮转设置模式的设置优先级指针包括若最大年龄方式没有超 时,釆用最大年龄方式,若最大年龄方式超时,采用顺序轮转方式;
所述交替设置模式的设置优先级指针包括若最大年龄方式没有超时或 者顺序轮转方式超时,采用最大年龄方式,若最大年龄方式超时并且顺序轮 转方式没有超时,采用顺序轮转方式。
可选的,所述端口请求的年龄从请求到达仲裁器的时间开始计算,或者 从请求提出的时间开始计算。
可选的,所述年龄最大的端口请求是按端口请求的年龄对有效的端口请 求进行排序而获得。
对应地,本发明还提供一种仲裁器,包括根据年龄超时的端口请求设 置有效的端口请求和根据端口请求的年龄设置优先级指针的设置单元,所述 端口请求的年龄是端口请求等待仲裁响应的时间,所述年龄超时是端口请求 的年龄超过年龄阈值;根据所述设置单元设置的优先级指针对有效的端口请 求进行仲裁的仲裁单元阵列。
与现有技术相比,上述技术方案以年龄最大的端口请求设置仲裁的优先 级指针,并且在端口有年龄超时的端口请求时,该端口中仅年龄超时的端口 请求可以参加仲裁,因此,可以增加等待仲裁响应时间长的端口请求获得仲 裁响应的机会,提高仲裁的公平性。采用最大年龄方式设置优先级指针,如果年龄最大的端口请求长时间未 获得仲裁响应,而可能使其它端口请求不能获得仲裁响应的情况下,釆用顺 序轮转方式可以增加其它等待仲裁响应时间较短但有迅速传送条件的端口请 求获得仲裁响应的机会,这样就提高了仲裁的公平性,改善了仲裁性能。
设置优先级指针的方式交替采用最大年龄方式和顺序轮转方式,可以进 一步减少了 "饥饿,,现象出现的可能性,提高了仲裁的公平性,改善了仲裁 性能。
以设定指针设置模式的方式来选择优先级指针的设置方式,因此可以通 过灵活地应用不同的优先级指针的设置方式,有效地解决了波阵仲裁中存在 的"饥饿"问题,提高了仲裁的公平性,使仲裁性能达到最优化。


图1是一种波阵仲裁器的仲裁单元阵列的结构原理图; 图2是本发明第一实施方式的仲裁方法的具体流程图; 图3是本发明第一实施方式的仲裁方法的实例示意图; 图4是本发明第一实施方式的仲裁器的结构示意图; 图5是本发明第二实施方式的仲裁方法的具体流程图; 图6是本发明第二实施方式的仲裁方法的实例示意图; 图7是本发明第二实施方式的仲裁器的结构示意图; 图8是本发明第三实施方式的仲裁方法的具体流程图; 图9是本发明第三实施方式的仲裁器的结构示意图; 图IO是本发明第四实施方式的仲裁器的结构示意图。
具体实施例方式
本发明实施方式是以等待仲裁响应时间最长(即年龄最大)的端口请求 设置仲裁的优先级指针,并且端口中仅等待仲裁响应时间长(即年龄超时)的端口请求可以参加仲裁,增加了等待仲裁响应时间长的端口请求获得仲裁 响应的机会,以此解决波阵仲裁中存在的"饥饿"问题。
本发明实施方式的仲裁方法包括下述步骤根据年龄超时的端口请求设 置有效的端口请求;根据端口请求的年龄设置优先级指针;根据所述设置的 优先级指针对所述有效的端口请求进行仲裁。
本发明实施方式的仲裁器包括根据年龄超时的端口请求设置有效的端 口请求和根据端口请求的年龄设置优先级指针的设置单元;根据所述设置单 元设置的优先级指针对有效的端口请求进行仲裁的仲裁单元阵列。
所述端口请求的年龄是端口请求等待仲裁响应的时间,所述年龄超时是 端口请求的年龄超过年龄阈值。
下面即结合附图和实施例对本发明的实施方式做详细的说明。 第一实施方式
本实施方式的仲裁方法包括根据年龄超时的端口请求设置有效的端口 请求;将优先级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先 级组;根据所述优先级指针对有效的端口请求进行仲裁。
端口请求的年龄可以从请求到达仲裁器的时间开始计算,对应地,年龄 最大的端口请求是最早到达仲裁器并且还未获得仲裁响应的端口请求。
端口请求的年龄也可以从请求提出的时间开始计算,输入端口提出请求 时,在端口发送的消息中会包含请求发送消息的时间(即请求提出的时间), 对应地,年龄最大的端口请求是最先提出请求并且还未获得仲裁响应的端口 请求。
所述年龄超时是指端口请求的年龄超过预设的年龄阈值。以端口请求的 年龄从请求到达仲裁器的时间开始计算为例,本实施方式中,在一个端口请 求到达仲裁器时,即开始对该端口请求进行计时,可以用一个年龄计数器对 仲裁器的工作时钟进行计数,当年龄计数器的计数值超过预设的年龄计数值
13(预设的年龄计数值等于预设的年龄阈值与仲裁器的工作时钟周期的比值),
即为端口请求的年龄超时;当年龄计数器的计数值达到最大值时计数值保持 不变,直至对应的端口请求获得仲裁响应;当端口请求获得仲裁响应后,对 应的年龄计数器清零。可以根据实际需要改变年龄阔值,从而计算出预设的 年龄计数值,以确定有哪些端口请求是年龄超时的。
如果一个输入端口向一个输出端口的请求未获得仲裁响应,该端口请求 继续等待仲裁响应,而该输入端口又可以继续向另 一个输出端口发出请求, 因此在仲裁时,每个输入端口可能会对应的有多个端口请求参加仲裁。例如, 请求(1, 0)为输入端口 1向输出端口 0发出的请求,若请求(1, 0)未获 得仲裁响应,其继续等待仲裁响应,输入端口 l又向输出端口 1发出请求, 则请求(1, 0)、请求(1, 1)都可能会参加仲裁。本实施方式所述的根据年 龄超时的端口请求设置有效的端口请求是根据是否有年龄超时的端口请求来 设置可以参加仲裁的端口请求如果一个输入端口的多个端口请求中没有年 龄超时的端口请求,那么该输入端口的所有端口请求都为有效的端口请求, 可以参加仲裁;如果一个输入端口的多个端口请求中有年龄超时的端口请求, 那么该输入端口仅有年龄超时的端口请求为有效的端口请求,可以参加仲裁, 该输入端口的其他端口请求(年龄没有超时的端口请求)为无效的端口请求, 不可以参加仲裁。
本实施方式的仲裁方法的一个具体流程如图2所示
步骤Sll,在每次仲裁开始前,判断是否有年龄超时的端口请求若有年 龄超时的端口请求,则执行步骤S12;若没有年龄超时的端口请求,则执行步 骤S13。本实施方式中是根据各端口请求对应的年龄计数器的计数值是否超过 了预设的年龄计数值来判断是否有年龄超时的端口请求,并确定有哪个或哪 些年龄超时的端口请求。
步骤S12,对于有年龄超时的端口请求的输入端口,将该输入端口的年龄超时的端口请求设置为有效的端口请求,将该输入端口的年龄没有超时的端
口请求设置为无效的端口请求;对于没有年龄超时的端口请求的输入端口 , 将该输入端口的所有端口请求设置为有效的端口请求,接着执行步骤S14。 步骤S13,将各端口的所有端口请求设置为有效的端口请求。 步骤S14,获取年龄最大的端口请求。可以按端口请求的年龄对有效的端 口请求进行排序(从大到小或者从小到大),也可以按端口请求的年龄对所有 的端口请求进行排序,获取的年龄最大的端口请求应该是一样的。
步骤S15,将优先级指针指向与年龄最大的端口请求对应的仲裁单元所在 的优先级组。
步骤S16,从优先级指针指向的优先级组开始对有效的端口请求进行仲 裁。接着返回至步骤Sll。
上述流程也可以先执行设置优先级指针的步骤S14至S15,再l丸行设置有 效的端口请求的步骤Sll至S13。
另外,对于年龄一样大的多个端口请求,可以按输入端口的端口号,以 升序或降序对端口请求进行排序,例如,请求(1, 0)、请求(2, 0)的年龄 一样大,请求(1, 0)的提出请求的端口为输入端口 1,请求(2, 0)的提出 请求的端口为输入端口2,如果按端口号升序进行排序,请求(l, O)排在请 求(2, 0)之前,即将请求(1, 0)的年龄视为比请求(2, 0)的年龄大。
下面结合图l和图3,以一个实例对本实施方式的仲裁方法进行说明。设 开始仲裁时,有请求(1, 0)、请求(2, 0)、请求(3, 5)、请求(4、 2), 下面的实例中 一个步骤表示一次仲裁。
(1-1)按请求到达仲裁器的时间,设对上述端口请求进行年龄排序(从 大到小)的结果为请求(l, 0)、请求(2, 0)、请求(3, 5)、请求(4, 2)。 请求(1, 0)的年龄最大,将优先级指针指向对应于请求(1, 0)的仲裁单 元(1, 0)所在的优先级组wl,即优先级指针设置为PriorPtl。对所有请求, 0)、请求(3, 5)、请求(4, 2)获得仲裁响应,输 入端口 1向输出端口 O发送消息,输入端口 3向输出端口 5发送消息,输入 端口 4向输出端口 2发送消息。请求(2, 0)未获得仲裁响应。
(1-2)又有请求(0, 3)和请求(5, 0),设对端口请求进行年龄排序的 结果为请求(2, 0)、请求(5, 0)、请求(0, 3)。请求(2, 0)的年龄最 大,将优先级指针指向对应于请求(2, 0)的仲裁单元(2, 0)所在的优先 级组w2,即优先级指针设置为PriorPt2。对所有请求进行仲裁后,请求(O, 3)获得仲裁响应,输入端口 0向输出端口 3发送消息。请求(2, 0)、请求 (5, 0)因输出端口 O处于忙状态而未获得仲裁响应。
(1-3 )又有请求(2,3),设对端口请求进行年龄排序的结果为请求(2,
0) 、请求(5, 0)、请求(2, 3)。请求(2, 0)的年龄最大,优先级指针仍 为PriorPt2。对所有请求进行仲裁后,请求(2, 0)、请求(5, 0)仍因输出 端口 0处于忙状态而未获得仲裁响应,请求(2, 3)因输出端口 3处于忙状 态而未获得仲裁响应。
(1-4)设又有请求(5, 1),并且此时请求(2, 0)的年龄超时,输入端 口 1向输出端口 0发送消息完成。输入端口 2有年龄超时的端口请求,即请 求(2, 0),因此,请求(2, 3)为无效的端口请求,不能参加仲裁,对有效 的端口请求进行年龄排序的结果为请求(2, 0)、请求(5, 0)、请求(5,
1) ,优先级指针仍为PriorPt2。对输入端口 2的请求(2, 0)、输入端口 5的 请求(5, 0)、请求(5, 1)进行仲裁后,请求(2, 0)、请求(5, 1)获得 仲裁响应,请求(5, 0)因请求(2, 0)获得仲裁响应而未获得仲裁响应。
对应地,本实施方式的仲裁器的基本结构如图4所示,包括设置单元10、 仲裁单元阵列ll。所述设置单元10包括端口设置单元12、获取单元13、指针 设置单元14。
16端口设置单元12,根据年龄超时的端口请求设置有效的端口请求。端口
设置单元12包括与各个端口请求对应的年龄计数器,根据年龄计数器的计数 值判断是否有年龄超时的端口请求若有年龄超时的端口请求,对于有年龄 超时的端口请求的输入端口 ,将该输入端口的年龄超时的端口请求设置为有 效的端口请求,将该输入端口的年龄没有超时的端口请求设置为无效的端口 请求;对于没有年龄超时的端口请求的输入端口,将该输入端口的所有端口 请求设置为有效的端口请求;若没有年龄超时的端口请求,则将各端口的所 有端口请求设置为有效的端口请求。
获取单元13,获取年龄最大的端口请求。可以按端口请求的年龄对端口 设置单元12设置的有效的端口请求进行排序,也可以按端口请求的年龄对所 有的端口请求进行排序,以获取年龄最大的端口请求。
指针设置单元14,根据获取单元13所获取的年龄最大的端口请求,将优 先级指针设置为指向与年龄最大的端口请求对应的仲裁单元所在的优先级 组。
仲裁单元阵列ll,根据指针设置单元14设置的优先级指针对端口设置单 元12设置的有效的端口请求进行仲裁。仲裁后,仲裁单元阵列ll向选中的仲 裁单元对应的提出请求的端口发送仲裁响应。本实施方式的仲裁单元阵列ll 为如图l所示的波阵仲裁单元阵列。
以年龄最大的端口请求设置仲裁的优先级指针,并且在端口有年龄超时 的端口请求时,该端口仅有年龄超时的端口请求可以参加仲裁,可以增加等 待仲裁响应时间长的端口请求获得仲裁响应的机会,减少"饥饿"现象出现 的可能性,提高仲裁的公平性。 第二实施方式
本实施方式的仲裁方法包括下述步骤
根据年龄超时的端口请求设置有效的端口请求;若最大年龄方式没有超时,釆用最大年龄方式,所述最大年龄方式是将
优先级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先级组; 若最大年龄方式超时,采用顺序轮转方式,所述顺序轮转方式是将优先
级指针轮流指向各优先级组;
才艮据所述优先级指针对有效的端口请求进行仲裁。
所述最大年龄方式超时是指采用最大年龄方式的时间超过了最大年龄方
式阈值。
所述根据年龄超时的端口请求设置有效的端口请求如第一实施方式所述。
所述端口请求的年龄从请求到达仲裁器的时间开始计算,或者从请求提 出的时间开始计算。所述年龄超时是指端口请求的年龄超过预设的年龄阈值。 本实施方式中可以使用与第一实施方式相同的年龄计数器来确定年龄超时的 端口i青求。
根据年龄最大的端口请求设置仲裁的优先级指针(即将优先级指针指向 与年龄最大的端口请求对应的仲裁单元所在的优先级组),如果年龄最大的端 口请求没有获得仲裁响应,优先级指针会一直指向同一个优先级组,这样, 位于优先级指针下方的输入请求获得仲裁响应的机会就会明显减少,因此, 相比于第一实施方式,本实施方式还设置了最大年龄方式阈值,在采用最大 年龄方式的时间超过了预设的最大年龄方式阈值后,采用顺序轮转方式,既 不再将优先级指针一直指向与年龄最大的端口请求对应的仲裁单元所在的优 先级组,而是轮流指向各个优先级组,即每次仲裁时先将优先级指针指向下 一个优先级组。例如,优先级指针从优先级组w0开始顺序循环,轮流指向
w0、 wl、 ....... w5、 w6、 wl、......;或者也可以不乂人优先级组w0开始,而
是^Mv开始釆用顺序轮转方式时优先级指针指向的优先级组开始顺序循环。
本实施方式的仲裁方法的一个具体流程如图5所示
18步骤S21,在每次仲裁开始前,判断是否有年龄超时的端口请求若有年 龄超时的端口请求,则执行步骤S22;若没有年龄超时的端口请求,则执行步 骤S23。
步骤S22,对于有年龄超时的端口请求的输入端口,将该输入端口的年龄 超时的端口请求设置为有效的端口请求,将该输入端口的年龄没有超时的端 口请求设置为无效的端口请求;对于没有年龄超时的端口请求的输入端口, 将该输入端口的所有端口请求设置为有效的端口请求,接着执行步骤S24。 步骤S23,将各端口的所有端口请求设置为有效的端口请求。 步骤S24,按端口请求的年龄对有效的端口请求进行排序,以获取年龄最 大的端口请求。
步骤S25,判断最大年龄方式是否超时若最大年龄方式超时,则执行步 骤S26;若最大年龄方式没有超时,则执行步骤S27。本实施方式中,当开始 采用最大年龄方式时,即开始对采用最大年龄方式的时间进行计时,可以用 一个最大年龄方式计数器对仲裁器的工作时钟进行计数,若最大年龄方式计 数器的计数值超过预设的最大年龄方式计数值(预设的最大年龄方式计数值 等于最大年龄方式阈值与仲裁器的工作时钟周期的比值),即为最大年龄方式 超时,最大年龄方式计数器的计数值保持不变。
步骤S26,将优先级指针指向下一个优先级组,例如,当前的优先级指针 指向优先级组wl,则将优先级指针指向优先级组w2。接着执行步骤S28。在 最大年龄方式超时后,将始终采用顺序轮转方式。
步骤S27,将优先级指针指向与年龄最大的端口请求对应的仲裁单元所在 的优先级组。
步骤S28,从优先级指针指向的优先级组开始对有效的端口请求进行仲 裁。接着返回至步骤S21。
上述流程也可以先执行设置优先级指针的步骤S24至S27,再执行设置有效的端口请求的步骤S21至S23。
下面结合图1和图6,以一个实例对本实施方式的仲裁方法的轮转设置优 先级指针进行说明,下面的实例中一个步骤表示一次仲裁。
(2-1)设有请求(1, 0)、请求(2, 0)和请求(3, 5),没有年龄超时 的端口请求,所有的端口请求都为有效的端口请求,对所有的端口请求进行 年龄排序后为请求(1, 0)、请求(2, 0)、请求(3, 5)。此时最大年龄方 式没有超时,釆用最大年龄方式,将优先级指针设置为对应年龄最大的请求
(1, 0)的PriorPtl,并且对所有请求进行仲裁。
(2-2 )设有请求(1, 0 )、请求(2, 0 )、请求(3, 5 )、请求(1, 3 )和 请求(2、 4),请求(1, 0)的年龄超时,因此输入端口l的请求(1, 0)为 有效的请求、请求(1, 3)为无效的端口请求,输入端口2的请求(2, 0)、 请求(2、 4)和输入端口3的请求(3, 5)都为有效的请求,对有效的端口请 求包括进行年龄排序后为请求(1, 0)、请求(2, 0)、请求(3, 5)、请求
(2、 4)。此时最大年龄方式没有超时,优先级指针设置为对应请求(1, 0) 的PriorPtl。对请求(1, 0)、请求(2, 0)、请求(3, 5)、请求(2、 4)进行 仲裁,请求(1, 3)因请求(1, 0)的年龄超时而不能参加仲裁。
(2-3)设请求(2, 0)的年龄超时,有请求(2, 0)、请求(3, 5)、请 求(1, 3)、请求(2、 4)和请求(3、 6)。请求(2、 4)为无效的端口请求, 其他请求都为有效的端口请求,对有效的端口请求进行年龄排序后为请求
(2, 0)、请求(3, 5)、请求(1, 3)、请求(3、 6)。此时最大年龄方式超 时,采用顺序轮转方式,优先级指针设置为PriorPtO (或者也可以设置为 PriorPt2)。对请求(2, 0)、请求(3, 5)、请求(1, 3)、请求(3、 6)进行 仲裁,请求(2、 4)因请求(2, 0)的年龄超时而不能参加仲裁。
(2-4)(接(2-3))有请求(3, 5)、请求(l, 3)、请求(2、 4)、请求
(3、 6),没有年龄超时的请求,进行年龄排序后的端口请求包括请求(3,
205)、请求(1, 3)、请求(2、 4)、请求(3、 6),最大年龄方式超时,采用顺 序轮转方式,优先级指针设置为PriorPtl (如果(2-3)中的优先级指针设置为 PriorPt2,则这里设置为PriorPt3 )。对所有请求进行仲裁。
对应地,本实施方式的仲裁器的基本结构如图7所示,包括设置单元20、 仲裁单元阵列21。所述设置单元20包括端口设置单元22、获取单元23、第一 指针设置单元24、第二指针设置单元25、选择单元26。
端口设置单元22,根据年龄超时的端口请求设置有效的端口请求。与第 一实施方式的端口设置单元12相同。
获取单元23,获取年龄最大的端口请求。与第一实施方式的获取单元13 相同。
第一指针设置单元24,根据获取单元23获取的年龄最大的端口请求,将 优先级指针设置为指向与年龄最大的端口请求对应的仲裁单元所在的优先级 组。
第二指针设置单元25,将优先级指针设置为轮流指向各优先级组。在每 次仲裁时,将优先级指针指向下一个优先级组。
选择单元26,判断最大年龄方式是否超时若最大年龄方式没有超时, 选择第一指针设置单元24设置的优先级指针传送给仲裁单元阵列21;若最大 年龄方式超时,选择第二指针设置单元25设置的优先级指针传送给仲裁单元 阵列21。选择单元26包括最大年龄方式计数器,根据最大年龄方式计数器的 计数值是否超过预设的最大年龄方式计数值来判断最大年龄方式是否超时。
仲裁单元阵列21,根据选择单元26选择的优先级指针对端口设置单元22 设置的有效的端口请求进行仲裁。
采用最大年龄方式,如果年龄最大的端口请求长时间未获得仲裁响应, 而可能使其它端口请求不能获得仲裁响应的情况下,采用顺序轮转方式可以增加其它等待仲裁响应时间较短但有迅速传送条件的端口请求获得仲裁响应
的机会,这样就提高了仲裁的公平性,改善了仲裁性能;并且在端口有年龄 超时的端口请求时,该端口仅有年龄超时的端口请求可以参加仲裁,这样可 以增加该端口等待仲裁响应时间较长的端口请求获得仲裁响应的机会,进一 步减少了 "几饿"现象出现的可能性。 第三实施方式
本实施方式的仲裁方法包括下述步骤
根据年龄超时的端口请求设置有效的端口请求;
若最大年龄方式没有超时或者顺序轮转方式超时,采用最大年龄方式, 所述最大年龄方式是将优先级指针指向与年龄最大的端口请求对应的仲裁单 元所在的优先级组;
若最大年龄方式超时并且顺序轮转方式没有超时,采用顺序轮转方式, 所述顺序轮转方式是将优先级指针轮流指向各优先级组;
根据所述优先级指针对有效的端口请求进行仲裁。
所述最大年龄方式超时是指采用最大年龄方式的时间超过了最大年龄方 式阈值。
所述顺序轮转方式超时是指采用顺序轮转方式设置优先级指针的时间超 过了顺序轮转方式阈值。
所述根据年龄超时的端口请求设置有效的端口请求如第一实施方式所述。
所述端口请求的年龄从请求到达仲裁器的时间开始计算,或者从请求提 出的时间开始计算。所述年龄超时是指端口请求的年龄超过预设的年龄阈值。 本实施方式中可以使用与第一实施方式相同的年龄计数器来确定年龄超时的 端口请求。
相比于第二实施方式,本实施方式除了设置最大年龄方式阔值,还设置
22了顺序轮转方式阈值。仲裁开始时,先釆用最大年龄方式,并开始计算采用
最大年龄方式的时间;在釆用最大年龄方式的时间超过了最大年龄方式阈值 后,则采用顺序轮转方式,并开始计算采用顺序轮转方式的时间;在采用顺 序轮转方式的时间超过了顺序轮转方式阈值后,再采用最大年龄方式,并重 新开始计算采用最大年龄方式的时间,......,如此循环,即交替采用最大年
龄方式和顺序轮转方式。
本实施方式的仲裁方法的一个具体流程如图8所示
步骤S31,在每次仲裁开始前,判断是否有年龄超时的端口请求若有年 龄超时的端口请求,则执行步骤S32;若没有年龄超时的端口请求,则执行步 骤S33。
步骤S32,对于有年龄超时的端口请求的输入端口,将该输入端口的年龄 超时的端口请求设置为有效的端口请求,将该输入端口的年龄没有超时的端 口请求设置为无效的端口请求;对于没有年龄超时的端口请求的输入端口 , 将该输入端口的所有端口请求设置为有效的端口请求,接着执行步骤S34。 步骤S33,将各端口的所有端口请求设置为有效的端口请求。 步骤S34,按端口请求的年龄对有效的端口请求进行排序,以获取年龄最 大的端口请求。
步骤S35,判断最大年龄方式是否超时若最大年龄方式超时,则执行步 骤S36;若最大年龄方式没有超时,则执行步骤S38。本实施方式中,当开始 釆用最大年龄方式时,即开始对采用最大年龄方式的时间进行计时,可以用 一个最大年龄方式计数器对仲裁器的工作时钟进行计数,若最大年龄方式计 数器的计数值超过预设的最大年龄方式计数值(预设的最大年龄方式计数值 等于最大年龄方式阈值与仲裁器的工作时钟周期的比值),即为最大年龄方式 超时。
步骤S36,判断顺序轮转方式是否超时若顺序轮转方式超时,则执行步骤S38;若顺序轮转方式没有超时,则执行步骤S37。本实施方式中,当开始采用顺序轮转方式时,即开始对釆用顺序轮转方式的时间进行计时,可以用一个顺序轮转方式计数器对仲裁器的工作时钟进行计数,若顺序轮转方式计数器的计数值超过预设的顺序轮转方式计数值(预设的顺序轮转方式计数值等于顺序轮转方式阈值与仲裁器的工作时钟周期的比值),即为顺序轮转方式超时。
最大年龄方式计数器的计数值在采用顺序轮转方式时保持不变,在从顺序轮转方式转为最大年龄方式时清零,以重新计算采用最大年龄方式的时间。顺序轮转方式计数器的计数值在采用最大年龄方式时保持不变,在从最大年龄方式转为顺序轮转方式时清零,以重新计算采用顺序轮转方式的时间。步骤S37,将优先级指针指向下一个优先级組。接着执行步骤S39。步骤S38,将优先级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先级组。
步骤S39,从优先级指针指向的优先级组开始对有效的端口请求进行仲裁。接着返回至步骤S31。
上述流程也可以先执行设置优先级指针的步骤S34至S38,再执行设置有效的端口请求的步骤S31至S33。
对应地,本实施方式的仲裁器的基本结构如图9所示,包括设置单元30、仲裁单元阵列31。所述设置单元30包括端口设置单元32、获取单元33、第一指针设置单元34、第二指针设置单元35、选择单元36。
端口设置单元32,根据年龄超时的端口请求设置有效的端口请求。与第一实施方式的端口设置单元12、第二实施方式的端口设置单元22相同。
获取单元33,获取年龄最大的端口请求。与第一实施方式的获取单元13、第二实施方式的获取单元23相同。
第一指针设置单元34,将优先级指针设置为指向与年龄最大的端口请求
24对应的仲裁单元所在的优先级组。与第二实施方式的第一指针设置单元24相同。
第二指针设置单元35,将优先级指针设置为轮流指向各优先级组。与第二实施方式的第而指针设置单元25相同。
选择单元36,判断最大年龄方式是否超时若最大年龄方式没有超时,选择第 一指针设置单元34设置的优先级指针传送给仲裁单元阵列31;若最大年龄方式超时,则判断顺序轮转方式是否超时,若顺序轮转方式没有超时,则选择第二指针设置单元35设置的优先级指针传送给仲裁单元阵列31,若顺序轮转方式超时,则选择第一指针设置单元35设置的优先级指针传送给仲裁单元阵列31。
选择单元36包括最大年龄方式计数器和顺序轮转方式计数器,根据最大年龄方式计数器的计数值是否超过预设的最大年龄方式计数值来判断最大年龄方式是否超时,根据顺序轮转方式计数器的计数值是否超过预设的顺序轮转方式计数值来判断顺序轮转方式是否超时。
仲裁单元阵列31,根据选择单元36选择的优先级指针对端口设置单元32设置的有效的端口请求进行仲裁。
本实施方式设置优先级指针的方式是交替采用最大年龄方式和顺序轮转方式,可以进一步减少了 "饥饿"现象出现的可能性,提高了仲裁的公平性,改善了仲裁性能。第四实施方式
本实施方式的仲裁方法包括下述步骤
根据年龄超时的端口请求设置有效的端口请求;
根据预先设定的指针设置模式,设置优先级指针;才艮据设置的优先级指针对有效的端口请求进行仲裁。所述指针设置模式包括最大年龄设置模式、年龄轮转设置模式和交替
25设置模式。
所述最大年龄设置模式的设置优先级指针包括将优先级指针指向与年
龄最大的端口请求对应的仲裁单元所在的优先级组,请参考第一实施方式中
^j"应的详细"i兌明。
所述年龄轮转设置模式的设置优先级指针包括若最大年龄方式没有超时,采用最大年龄方式;若最大年龄方式超时,采用顺序轮转方式,请参考第二实施方式中对应的详细说明。
所述交替设置模式的设置优先级指针包括若最大年龄方式没有超时或者顺序轮转方式超时,采用最大年龄方式;若最大年龄方式超时并且顺序轮转方式没有超时,采用顺序轮转方式,请参考第三实施方式中对应的详细说明。
所述根据年龄超时的端口请求设置有效的端口请求如第一实施方式所述。
对应地,本实施方式的仲裁器的一种基本结构如图10所示,包括模式寄存器47、设置单元40、仲裁单元阵列41。所述设置单元40包括端口设置单元42、获取单元43、第一指针设置单元44、第二指针设置单元45、选择单元46。
模式寄存器47,储存预先设定的指针设置模式。所述指针设置模式包括'.最大年龄设置模式、年龄轮转设置模式和交替设置模式。
端口设置单元42,根据年龄超时的端口请求设置有效的端口请求。与第一实施方式的端口设置单元12、第二实施方式的端口设置单元22、第三实施方式的端口设置单元32相同。
获取单元43,获取年龄最大的端口请求。与第一实施方式的获取单元13、第二实施方式的获取单元23、第三实施方式的获取单元33相同。
第 一指针设置单元44,将优先级指针设置为指向与年龄最大的端口请求对应的仲裁单元所在的优先级组。与第二实施方式的第一指针设置单元24、第三实施方式的第一指针设置单元34相同。
第二指针设置单元45,将优先级指针设置为轮流指向各优先级组。与第二实施方式的第二指针设置单元25、第三实施方式的第二指针设置单元35相同。
选择单元46,根据模式寄存器47储存的指针设置模式选择第一指针设置单元44或第二指针设置单元45设置的优先级指针传送给仲裁单元阵列41:
在模式寄存器47储存的指针设置模式为最大年龄设置模式时,选择单元46选择第一指针设置单元44设置的优先级指针传送给仲裁单元阵列41;
在模式寄存器47储存的指针设置模式为年龄轮转设置模式时,选择单元46对应地与第二实施方式的选择单元26相同;
在模式寄存器47储存的指针设置模式为交替设置模式时,选择单元46对应地与第三实施方式的选择单元36相同。
仲裁单元阵列41,根据选择单元46选择的优先级指针对端口设置单元42设置的有效的端口请求进行仲裁。
本实施方式是上述三种实施方式的结合,在其他实施方式中,也可以是上述三种实施方式的两两结合。以设定指针设置模式的方式来选择仲裁的优先级指针的设置方式,因此可以通过灵活地应用不同的优先级指针的设置方式,有效地解决了波阵仲裁中存在的"饥饿"问题,提高了仲裁的公平性,使仲裁性能达到最优化。
本发明虽然以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以做出可能的变动和修改,因此本发明的保护范围应当以本发明权利要求所界定的范围为准。
权利要求
1. 一种仲裁方法,其特征在于,包括下述步骤根据年龄超时的端口请求设置有效的端口请求;根据端口请求的年龄设置优先级指针;根据所述优先级指针对有效的端口请求进行仲裁,所述端口请求的年龄是端口请求等待仲裁响应的时间,所述年龄超时是端口请求的年龄超过年龄阈值。
2. 根据权利要求1所述的仲裁方法,其特征在于,所述根据年龄超时的端 口请求设置有效的端口请求包括下述步骤对于有年龄超时的端口请求的输 入端口 ,仅将所述输入端口的年龄超时的端口请求设置为有效的端口请求; 对于没有年龄超时的端口请求的输入端口 ,将所述输入端口的所有端口请求 设置为有效的端口请求。
3. 根据权利要求1所述的仲裁方法,其特征在于,所述根据端口请求的年 龄设置优先级指针包括下述步骤将优先级指针指向与年龄最大的端口请求 对应的仲裁单元所在的优先级组。
4. 根据权利要求1所述的仲裁方法,其特征在于,所述根据端口请求的年 龄设置优先级指针包括下述步骤若最大年龄方式没有超时,采用最大年龄方式,所述最大年龄方式是将 优先级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先级组;若最大年龄方式超时,采用顺序轮转方式,所述顺序轮转方式是将优先 级指针轮流指向各优先级组,所述最大年龄方式超时是指采用最大年龄方式的时间超过了最大年龄方 式阈值。
5. 根据权利要求1所述的仲裁方法,其特征在于,所述根据端口请求的年 龄设置优先级指针包括下述步骤若最大年龄方式没有超时或者顺序轮转方式超时,釆用最大年龄方式,所述最大年龄方式是将优先级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先级组;若最大年龄方式超时并且顺序轮转方式没有超时,采用顺序轮转方式, 所述顺序轮转方式是将优先级指针轮流指向各优先级组,所述最大年龄方式超时是指采用最大年龄方式的时间超过了最大年龄方 式阈值,所述顺序轮转方式超时是指采用顺序轮转方式的时间超过了顺序轮转方 式阈值。
6. 根据权利要求1所述的仲裁方法,其特征在于,所述根据端口请求的年 龄设置优先级指针包括下述步骤根据指针设置模式设置优先级指针,所述 指针设置模式包括年龄设置模式、年龄轮转设置模式和交替设置模式或者其 中的两两结合,其中,所述年龄设置模式的设置优先级指针包括将优先级指针指向与年龄最 大的端口请求对应的仲裁单元所在的优先级组;所述年龄轮转设置模式的设置优先级指针包括若最大年龄方式没有超 时,采用最大年龄方式,若最大年龄方式超时,采用顺序轮转方式;所述交替设置模式的设置优先级指针包括若最大年龄方式没有超时或 者顺序轮转方式超时,采用最大年龄方式,若最大年龄方式超时并且顺序轮 转方式没有超时,采用顺序轮转方式,其中,所述最大年龄方式是将优先级指针指向与年龄最大的端口请求对 应的仲裁单元所在的优先级组,所述顺序轮转方式是将优先级指针轮流指向 各优先级组,所述最大年龄方式超时是指采用最大年龄方式的时间超过了最 大年龄方式阈值,所述顺序轮转方式超时是指采用顺序轮转方式的时间超过 了顺序轮转方式阈值。
7. 根据权利要求1至6中任意一项所述的仲裁方法,其特征在于,所述端口请求的年龄从请求到达仲裁器的时间开始计算,或者从请求提出的时间开 始计算。
8. 根据权利要求3至6中任意一项所述的仲裁方法,其特征在于,所述年 龄最大的端口请求是按端口请求的年龄对有效的端口请求进行排序而获得。
9. 一种仲裁器,其特征在于,包括根据年龄超时的端口请求设置有效的端口请求和根据端口请求的年龄设 置优先级指针的设置单元,所述端口请求的年龄是端口请求等待仲裁响应的 时间,所述年龄超时是端口请求的年龄超过年龄阈值;根据所述设置单元设置的优先级指针对有效的端口请求进行仲裁的仲裁 单元阵列。
10. 根据权利要求9所述的仲裁器,其特征在于,所述设置单元包括 端口设置单元,根据年龄超时的端口请求设置有效的端口请求; 获取单元,获取年龄最大的端口请求;指针设置单元,根据获取单元获取的年龄最大的端口请求,将优先级指 针设置为指向与年龄最大的端口请求对应的仲裁单元所在的优先级组。
11. 根据权利要求9所述的仲裁器,其特征在于,所述设置单元包括 端口设置单元,根据年龄超时的端口请求设置有效的端口请求; 获取单元,获取年龄最大的端口请求;第一指针设置单元,根据所述获取单元获取的年龄最大的端口请求,将 优先级指针设置为指向与年龄最大的端口请求对应的仲裁单元所在的优先级 组;第二指针设置单元,将优先级指针设置为轮流指向各优先级组; 选择单元,选择第一指针设置单元或第二指针设置单元设置的优先级指 针传送给仲裁单元阵列。
12. 根据权利要求10或11所述的仲裁器,其特征在于,所述端口设置单元的根据年龄超时的端口请求设置有效的端口请求包括对于有年龄超时的端 口请求的输入端口 ,仅将所述输入端口的年龄超时的端口请求设置为有效的 端口请求;对于没有年龄超时的端口请求的输入端口,将所述输入端口的所有端口请求_没置为有效的端口请求。
13. 根据权利要求10或11所述的仲裁器,其特征在于,所述获取单元获取 的年龄最大的端口请求是按端口请求的年龄对有效的端口请求进行排序而获 得的。
14. 根据权利要求11所述的仲裁器,其特征在于,所述选择单元判断最大年 龄方式是否超时若否则选择所述第一指针设置单元设置的优先级指针传送 给所述仲裁单元阵列;若是则选择所述第二指针设置单元设置的优先级指针 传送给所述仲裁单元阵列,所述最大年龄方式超时是指采用最大年龄方式的时间超过了最大年龄方 式阈值,所述最大年龄方式是将优先级指针设置为指向与年龄最大的端口请 求对应的仲裁单元所在的优先级组。
15. 根据权利要求11所述的仲裁器,其特征在于,所述选择单元判断最大年 龄方式是否超时若否则选择所述第一指针设置单元设置的优先级指针传送 给所述仲裁单元阵列;若是则判断顺序轮转方式是否超时,若否则选择所述 第二指针设置单元设置的优先级指针传送给所述仲裁单元阵列,若是则选择所述第一指针设置单元设置的优先级指针传送给所述仲裁单元阵列,所述最大年龄方式超时是指釆用最大年龄方式设置的时间超过了最大年龄方式阈值,,所述最大年龄方式是将优先级指针设置为指向与年龄最大的端口请求对应的仲裁单元所在的优先级组,所述顺序轮转方式超时是指采用顺序轮转方式设置优先级指针的时间超过了顺序轮转方式阈值,所述顺序轮转方式是将优先级指针设置为轮流指向各优先级组。
16. 根据权利要求11所述的仲裁器,其特征在于,还包括用于储存预先设定 的指针设置模式的模式寄存器,所述指针设置模式包括年龄设置模式、年龄 轮转设置模式和交替设置模式或者其中的两两结合,其中,在所述模式寄存器储存的指针设置模式为年龄设置模式时,所述选择单 元选择所述第 一指针设置单元设置的优先级指针传送给所述仲裁单元阵列;在所述模式寄存器储存的指针设置模式为年龄轮转设置模式时,所述选 择单元判断最大年龄方式是否超时若否选择所述第一指针设置单元设置的 优先级指针传送给所述仲裁单元阵列;若是则选择所述第二指针设置单元设 置的优先级指针传送给所述仲裁单元阵列;在所述模式寄存器储存的指针设置模式为交替设置模式时,所述选择单 元判断最大年龄方式是否超时若否则选择所述第一指针设置单元设置的优 先级指针传送给所述仲裁单元阵列;若是则判断顺序轮转方式是否超时,若 否则选择所述第二指针设置单元设置的优先级指针传送给所述仲裁单元阵 列,若是则选择所述第一指针设置单元设置的优先级指针传送给所述仲裁单 元阵列,所述最大年龄方式超时是指采用最大年龄方式的时间超过了最大年龄方 式阈值,所述最大年龄方式是将优先级指针设置为指向与年龄最大的端口请 求对应的仲裁单元所在的优先级组,所述顺序轮转方式超时是指采用顺序轮转方式的时间超过了顺序轮转方 式阈值,所述顺序轮转方式是将优先级指针设置为轮流指向各优先级组。
17. 根据权利要求9至16中任意一项所述的仲裁器,其特征在于,所述端口 请求的年龄从请求到达仲裁器的时间开始计算,或者从请求提出的时间开始 计算。
全文摘要
一种仲裁方法和仲裁器。所述仲裁方法包括对于有年龄超时的端口请求的输入端口,仅将所述输入端口的年龄超时的端口请求设置为有效的端口请求;对于没有年龄超时的端口请求的输入端口,将所述输入端口的所有端口请求设置为有效的端口请求;若最大年龄方式没有超时或者顺序轮转方式超时,将优先级指针指向与年龄最大的端口请求对应的仲裁单元所在的优先级组;若最大年龄方式超时并且顺序轮转方式没有超时,将优先级指针轮流指向各优先级组;根据所述优先级指针对有效的端口请求进行仲裁。所述仲裁方法和仲裁器可以解决波阵仲裁中存在的“饥饿”问题,改善仲裁性能。
文档编号H04L12/56GK101471856SQ20071016066
公开日2009年7月1日 申请日期2007年12月26日 优先权日2007年12月26日
发明者姚玉良, 宋新亮, 张清波, 瑛 李, 牟华先, 韩文燕, 黄国华 申请人:无锡江南计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1