CN103077141A - 一种基于amba总线的自适应实时加权优先仲裁方法及仲裁器 - Google Patents
一种基于amba总线的自适应实时加权优先仲裁方法及仲裁器 Download PDFInfo
- Publication number
- CN103077141A CN103077141A CN2012105750698A CN201210575069A CN103077141A CN 103077141 A CN103077141 A CN 103077141A CN 2012105750698 A CN2012105750698 A CN 2012105750698A CN 201210575069 A CN201210575069 A CN 201210575069A CN 103077141 A CN103077141 A CN 103077141A
- Authority
- CN
- China
- Prior art keywords
- main equipment
- bus
- value
- weighting factor
- module
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Bus Control (AREA)
Abstract
本发明公开了一种基于AMBA总线的自适应实时加权优先仲裁方法及仲裁器,在一次循环中,各主设备的优先级高低由加权因子决定,加权因子越大的主设备优先级越高;各个主设备的优先级在每一次发生总线仲裁后重新进行排序,当一个主设备得到一次总线授权后,其相应的加权因子递减1,伴随着加权因子的减小,各主设备的优先级实时地发生变化,以新的优先级顺序作为下一次仲裁的依据;当某一个主设备的加权因子减小到0后,各个主设备的加权因子会重新复位,开始下一轮循环。改善了加权优先循环算法在一次循环中低优先级主设备等待时间过长的缺陷,同时解决由于加权因子固定而使各主设备所分配的总线带宽无法根据系统功能的变化而实时变化的问题。
Description
技术领域
本发明属于AMBA总线仲裁技术领域,涉及一种基于AMBA总线的自适应实时加权优先仲裁方法及仲裁器。
背景技术
随着半导体设计能力以及工艺制程的不断进步,在单一芯片上集成多种功能模块早已成为可能,SoC设计理念以及模块复用思想的提出,更是使大规模数字集成电路的设计有了质的飞跃。现在的SoC芯片,集成了多个处理器及运算单元,包括中央处理器、图像处理器、多媒体音频/视频编解码器以及多种功能的数字信号处理单元。在一个SoC系统中,决定系统性能的不再是单一处理器的运行速度,而主要取决于各个处理器单元之间的高效通信及其带宽的平衡分配。仲裁器负责处理各个处理器访问总线的优先级,协调多个处理器共享总线引起的竞争,保证总线资源合理、高效的分配,以使系统性能达到最优。
AMBA总线(Advanced Microcontroller Bus Architecture)是ARM公司提出的一种多级片上总线互联结构,AMBA-AHB总线规定了仲裁协议及仲裁器的接口,但协议中并没有规定仲裁器使用何种仲裁算法,因此仲裁器的仲裁算法设计具有很强的灵活性。
图1所示为基于AMBA总线的仲裁器的示意图。对AMBA总线的仲裁器示意图中部分重要信号及功能的详细说明如下:
HBUSREQx[15:0]:AHB总线主设备发出的请求访问总线的申请信号。每个总线主设备都会有一个输出到仲裁器的申请信号HBUSREQx,AHB总线系统最多支持多达16个独立的AHB总线主设备。
HGRANTx[15:0]:授予信号是仲裁器的输出信号,表示最高优先级的主设备获得访问总线的授权。主设备在HGRANTx信号为高且HREADY有效的时钟HCLK上升沿获得总线授权。
HMASTER[3:0]:仲裁器使用HMASTER[3:0]信号表示获得总线授权的主设备编号,该信号还用来控制中央地址译码器和控制信号多路选择器。当有从设备申请进行一次SPLIT传输时,应该记录当前主设备编号HMASTER,以使从设备恢复传输时能够告知仲裁器授予相应主设备总线使用权。
HLOCKx[15:0]:主设备在发起一次锁定传输时,与请求信号一起声明的锁定传输信号。锁定传输信号提示仲裁器主设备正在执行一系列不可分割的传输。一旦锁定传输开始,在本次传输结束之前,仲裁器不能将总线控制权授予其他主设备。
HMASTERLOCK:仲裁器通过声明HMASTERLOCK信号来表明当前传输是一次锁定传输,该信号具有和地址以及控制信号相同的时序。
HRESP[1:0]:HRESP是从设备传输响应信号,在传输进行阶段如果从设备认为传输的执行将占用大量的时钟周期时,从设备可以发出一个SPLIT响应。该信号提示仲裁器当前进行传输的主设备不应该继续占用总线,直到从设备做好完成这次传输的准备发出SPLIT申请,先前的主设备将再次获得总线并完成数据传输。
HSPLITx[16:0]:当从设备能够完成一次SPLIT传输时,将声明HSPLITx[15:0]所对应位,以便通知仲裁器赋予相应主设备总线授权以完成传输。
由于AMBA总线规范没有规定总线仲裁算法,因此设计者可以根据需要自由的进行算法的选择和修改。但不论哪一种算法,都应该满足以下四个基本要求:
(1)每一时刻只能有一个主设备占用总线;
(2)一次完整传输不允许被打断;
(3)先请求的主设备应该首先得到响应,当同一时刻有多个主设备发出请求时,应该按照仲裁算法的优先级次序进行响应。
(4)仲裁算法应该保证“公平”,保证每个主设备都可以在一定的时间内获得总线。
比较常见的仲裁算法主要包括固定优先级算法、轮转优先级算法、基于固定优先级和轮转优先级的混合优先级算法以及加权优先循环算法等。
A.固定优先级算法:所谓固定优先级算法是指每个主设备访问共享总线的优先级是固定的,重要性高的主设备相应的要保证高的优先级,这种算法虽然保证了主设备的运行速度,但是其缺点也很明显,就是当高优先级主设备长期占用总线时,低优先级的主设备等待时间会很长,缺乏公平性。
B.轮转优先级算法:轮转优先级算法是指主设备的优先级会随着主设备占用总线而变化,当一个主设备占用总线后,它的优先级随即变为最低从而使其他低优先级主设备有机会获得总线。这种算法保证了公平性,由于这种算法过于平均,使得每个主设备访问总线的带宽几乎一样,而当主设备需要更大的带宽进行多次实时数据传输时,会由于优先级的降低而增加访问延迟,降低数据传输效率。
C.混合优先级算法:混合优先级算法是指将固定优先级算法和轮转优先级算法相结合,通常给主设备A赋予最高的优先权,其他主设备仍旧采用轮转优先级算法。虽然这种算法在一些特定的情况下能够适应系统各主设备对共享总线的带宽需求,但是由于周边主设备仍旧采用的是轮转优先级算法,因此并不能从根本上解决对各总线主设备合理分配总线带宽的问题。
D.加权优先循环算法:加权优先循环算法是指根据主设备的不同需求分配给其不同的加权因子,从而决定不同主设备访问总线的优先级别,而这个加权因子也决定了在一次循环中各主设备访问总线的次数Ci,其原理如下:假设系统中有n个主设备,每个主设备的初始加权因子为Wi,其中W1>W2>...>Wi...>Wn,则加权因子之和为W:
每个主设备在一次循环中访问总线的次数Ci的初始值为Wi。初始加权因子越大则相应主设备的优先级也就越高,当多个主设备申请访问总线时,仲裁器根据各个主设备的优先级决定将总线授权给某主设备,这个与固定优先级算法相同,即根据初始加权因子的大小对各主设备的优先级进行排序。由于加权因子也决定了在一次循环中各主设备访问总线的次数Ci,当某个主设备得到总线授权后,其相应的访问总线次数递减Ci=Ci-1,当该主设备的访问次数递减为Ci=0时,在本次循环中,该主设备彻底失去访问总线的权利。在优先级队列中只剩下访问次数未递减至0的主设备。
由此可见,在一次完整的循环中,各主设备共享总线带宽的比率为:
由上式可以看出系统中各主设备带宽比率与主设备个数及主设备接口顺序无关,而只和各主设备的加权因子有关系。加权优先循环算法避免了固定优先级算法中总线独占和轮转优先级算法中总线带宽分配过于平均的现象,同时分配给每个主设备加权因子的比率,可以尽可能接近各主设备所需总线带宽的比率,改善了系统性能。
加权优先循环算法可以避免固定优先级算法中高优先级主设备长期占用总线而使低优先级主设备长时间不能得到总线而造成的“撑死”和“饿死”现象,也可以改善轮转优先级算法带来的总线带宽分配过于平均的问题,同时,由于各主设备的加权因子决定各主设备的总线带宽分配,所以可以根据各主设备对总线带宽要求设定加权因子,最大限度保证系统性能。
如上所述,固定优先级算法、轮转优先级算法以及混合优先级算法都存在明显的缺陷,虽然加权优先循环算法在一定程度上改善了前三种算法存在的不足,但是,随着SoC结构越来越复杂,一个系统中包含的主设备,如各种DSP多媒体IP核越来越多,系统的功能也越来越丰富,加权优先循环仲裁算法就显现出其不足。首先,在加权优先循环算法的一个循环周期中,对各主设备的加权因子进行比较,得到各主设备的优先级排序,在一次循环中各主设备优先级固定,虽然在一次循环中当主设备访问次数递减为0后会失去访问总线的权利,避免了低优先级主设备“饿死”的现象,但低优先级主设备的等待时间会远远大于高优先级主设备等待时间,系统的整体性能取决于系统中各主设备的高效通信,低优先级主设备与高优先级主设备间的等待时间差异过大,往往会成为限制系统整体性能的重要因素。其次,加权优先循环算法中各主设备的加权因子是固定的,在系统功能比较单一的情况下,这种设计可以满足性能需求,但随着系统功能的不断丰富,系统中各主设备对总线带宽的需求会随着功能的不同而时刻发生变化,如果采用固定的加权因子,就会使各主设备总线带宽分配不合理,从而降低系统性能。
发明内容
本发明解决的问题在于提供一种基于AMBA总线的自适应实时加权优先仲裁方法及仲裁器,改善了加权优先循环算法在一次循环中低优先级主设备等待时间过长的缺陷,同时解决由于加权因子固定而使各主设备所分配的总线带宽无法根据系统功能的变化而实时变化的问题。
本发明是通过以下技术方案来实现:
一种基于AMBA总线的自适应实时加权优先仲裁方法,包括以下操作:
在一次完整循环的初始阶段,各主设备的加权因子复位,各个主设备的加权因子为Wi,Wi也决定了一次循环中每个主设备最多得到总线的次数Ci,Wi=Ci;
在一次循环中,各主设备的优先级高低由加权因子决定,加权因子越大的主设备优先级越高;各个主设备的优先级在每一次发生总线仲裁后重新进行排序,当一个主设备得到一次总线授权后,其相应的加权因子递减1,伴随着加权因子的减小,各主设备的优先级实时的发生变化,以新的优先级顺序作为下一次仲裁的依据;当某一个主设备的加权因子减小到0后,各个主设备的加权因子会重新复位,开始下一轮循环。
若一个主设备得到一次总线授权后,其相应的加权因子递减1之后与其他主设备的加权因子相时,之前被总线授权的主设备的优先级大于其他主设备。
设各个主设备的加权因子W1>W2>...>Wi...>Wn,则加权因子之和为W:
所述的各主设备的加权因子的产生为:
主设备传输计数模块对一定时间内各主设备的传输次数进行统计,当任何一个主设备的传输次数达到预设值时,对此段时间内各主设备发送数据次数进行寄存,得到各主设备的传输数据值transX_count,并将该值发送给加权因子基础值产生模块;加权因子基础值产生模块根据transX_count值得到各主设备的加权因子基础值D1;
与此同时,主设备等待计数模块对各主设备的等待时间进行记录,当任何一个主设备的等待时间所经历的HCLK周期达到预设值时,对各个主设备的等待时间计数器值waitX_count进行寄存,并将该值发送给加权因子修正值产生模块;加权因子修正值产生模块根据waitX_count值得到加权因子修正值D2;
主设备等待计数模块同时负责产生各主设备新的加权因子值,当任何一个主设备的等待时间达到预设值时,主设备等待计数模块发出sample_data信号;同时将加权因子基础值D1、加权因子修正值D2相加取平均值,将结果与当前各主设备加权因子相加,并且再次取平均值,得到下一阶段的各主设备加权因子值。
一种基于AMBA总线的自适应实时加权优先仲裁器,包括:
权重位产生模块,该模块通过对总线上各主设备的传输数据的数量和等待时间进行监视,对各主设备的传输需求进行预测,产生各主设备的初始加权因子并将其发送给优先级产生模块;
优先级产生模块,该模块接收权重位产生模块传送过来的各主设备的初始加权因子,以此作为一次循环中各主设备访问次数的初始值;在一次循环中每一次发生总线仲裁,对相应得到总线的主设备的加权因子值进行减1操作,伴随着加权因子的变化,主设备优先级排序也实时发生变化,新的主设备优先级排序将作为仲裁时总线授权的依据,并实时的得到发出总线申请并且具有最高优先级的主设备编号;当各主设备的加权因子中有减小为0的值时,加权因子重新赋值,开始下一次循环;
总线移交判定模块,该模块对总线的控制信号、锁定传输标志以及分块传输控制模块信号进行检测,当控制信号达到总线移交的标准时,总线移交判断模块的输出控制信号有效,发出仲裁许可信号;仲裁信号输出模块接收到输出控制信号有效后,完成一次总线的仲裁和移交。
锁定传输模块,锁定块传输控制模块用来处理主设备的锁定传输申请,当主设备在申请总线的同时声明HLOCK_M[15:0]信号的相应位时,则主设备发起的是一次锁定传输;锁定传输模块确保发起锁定传输的主设备在获得总线后没有其他的主设备被授予总线直至传输结束;当锁定传输结束前,如果从设备发出SPLIT响应,则此时总线主设备将授权给虚拟主设备;
仲裁信号输出模块,该模块在接到总线移交判定模块发出的输出控制信号有效信号后,对优先级产生模块生成的主设备编号进行寄存和译码,并对该主设备所对应HGRANT_M[15:0]信号的相应位进行声明;同时,仲裁信号输出模块还对被授予的主设备编号HMASTER进行输出,表明哪个主设备正在占用总线并进行一次传输;仲裁信号中的锁定传输信号HMASTERLOCK由锁定传输控制模块得到。
所述的权重位产生模块包括主设备传输计数模块、基础值产生模块、主设备等待计数模块和修正值产生模块;
各主设备的权重位产生为:
系统复位后,各主设备的加权因子值为预设值,此时各主设备的加权因子相等;
主设备传输计数模块和主设备等待计数模块分别对主设备的数据传输量和等待时间进行统计;当确认主设备进行了一次数据的发送时,相应主设备的传输计数值trans_count加1;当确认主设备正在申请一次总线,但并未得到总线授权,主设备处于等待状态,相应主设备的等待时间计数值weight_count加1;
各主设备的发送数据计数值和等待时间计数值分别和各自的内部比较值比较,当任何一个主设备的数据传输计数器值与预设比较值相同时,对此刻所有主设备的传输数据计数值trans_count进行寄存,同时对各个计数器值进行清零,准备下一轮计数;当任何一个主设备等待时间计数值与预设比较值相等时,对各主设备的计数值wait_count进行寄存,并将计数器值清零;
对于采样得到的各主设备数据传输计数器值trans_count和等待时间计数器值wait_count,分别输入到基础值产生模块和修正值产生模块,得到各主设备的4bit二进制加权因子的基础值D1和修正值D2;
基础值D1的产生为:对各个主设备的传输计数值进行排序,如果两个主设备的计数值相等,则根据各个主设备的接口顺序进行排列并赋值,给传输计数值最大的主设备赋值为特定值,其余主设备按照顺序递减;
修正值D2的产生为:对各主设备等待时间计数值进行比较,对于计数值达到预设值的主设备,将其修正值赋值为特定值,其余主设备的修正值均为0。
将各个主设备的加权因子基础值D1和修正值D2相加,对得到的结果取平均值,得到S1,这个结果与当前各主设备的加权因子值再次相加取平均值,得到S2;
当等待时间计数器与内部预设值相等时,发出sample_data信号,对S2值进行采样,从而得到下一个阶段各个主设备的加权因子值。
所述的优先级产生模块包括掩膜模块、最高优先级主设备判定模块、分块主设备产生模块以及主设备选择控制模块;
掩膜模块,该模块对各从设备发出的应答信号HRESP和从设备的分块传输请求信号HSPLIT进行检测,当从设备不能立刻响应主设备的传输请求,应答信号HRESP为SPLIT响应时,表示尝试这次传输的总线主设备不应该被授予总线,掩膜模块记录此时占用总线的主设备编号,并对相应的主设备申请进行屏蔽,从而使其他低优先级的主设备占用总线;当发出SPLIT响应的从设备确定能够完成传输,掩膜模块在接到此信号的同时,解除对相应主设备的屏蔽,以使总线能够及时授予相应的主设备以重试传输;
最高优先级主设备判定模块,该模块对各主设备的优先级进行排序,得到申请总线的最高优先级主设备的编号;最高优先级主设备产生为:
对权重位产生模块传输来的各个主设备的权重值masterX_weight_value进行寄存,作为加权因子计数值count_x的初始值,同时对总线上各主设备的传输状态进行监测,
在一次循环中,各主设备的加权因子以寄存的masterX_weight_value为基础进行递减,优先级排序逻辑对各主设备的加权因子计数值进行比较,实时得到各个主设备的优先级排序;当某个主设备进行一次总线传输后,其相应的加权因子计数值count_x减1;最高优先级产生逻辑根据此排序以及各主设备的申请,得到此刻申请总线且具有最高优先级的主设备编号alg_next_master;
当任何一个主设备的加权因子计数值count_x为0时,主设备选择控制模块将重新载入各个主设备的权重值masterX_weight_value,作为加权因子计数值的初始值,并开始下一轮判定;
分块主设备产生模块,当有从设备声明HSPLIT[15:0]的相应位以发起一次分块传输时,分块主设备产生模块根据此刻各主设备的优先级排序,将申请分块传输的各主设备中具有最高优先级的主设备编号most_sig_hsplit送入主设备选择控制模块;
主设备选择控制模块,该模块对总线申请以及锁定和分块传输信号进行检测,得到不同的控制信号,输出next_master主设备编号。
所述的总线移交判定模块在以下几种情况下将发起一次总线仲裁:
1)当总线从设备请求一次分块传输,并且当前主设备没有进行一次锁定传输时,总线移交判定模块使输出控制信号require_arbiter有效,进而完成一次总线的仲裁;
2)当从设备没有发出分块传输请求,并且当前主设备的传输不是锁定传输时,有:
a、当前主设备没有传输数据时,总线移交判定模块使require_arbiter信号有效,实现一次总线的仲裁;
b、当前主设备正在进行一次非连续单一突发传输,则此时总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1;
c、当前主设备在进行4拍增量突发或者4拍回环突发的最后一个数据传输周期,总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1;
d、当前主设备在进行8拍增量突发或者8拍回环突发的最后一个数据传输周期,总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1;
e、当主设备进行一次不定长突发传输时,是否发起一次总线仲裁,由当前占用总线的主设备决定;当主设备在传输数据的同时继续发出总线申请信号时,总线移交判定模块不发出总线仲裁允许信号;当主设备在传输数据的同时没有发出总线申请信号,此时总线移交判定模块发出总线仲裁允许信号,此时仲裁允许信号为require_arbiter=!HBUSREQ_M[current_master]。
所述的锁定块传输控制模块同时还对HMASTERLOCK信号进行声明,以表示一次锁定传输,HMASTERLOCK信号属于仲裁信号的一部分。
所述的自适应实时加权优先仲裁器接收主机的总线申请信号HBUSREQ[15:0]及锁定传输信号HLOCK[15:0],输出仲裁信号;MUX1通过对仲裁器输出信号HMASTER进行译码,将获得授权的主设备发出的控制信号、地址信号以及数据信号输出到总线上,监视模块对各个主机的发送时间和总线授权时间进行记录。
与现有技术相比,本发明具有以下有益的技术效果:
本发明提供的基于AMBA总线的自适应实时加权优先仲裁方法及仲裁器,使各个主设备的优先级在每一次发生总线仲裁后重新进行排序,以新的优先级顺序作为下一次仲裁的依据,缩短低优先级主设备的等待时间,从而减小各个主机间等待时间的差异。
本发明提供的基于AMBA总线的自适应实时加权优先仲裁方法及仲裁器,根据系统中各主设备实际发送数据量和各主设备等待时间来确定下一段时间内各主设备的加权因子,从而达到自适应调节总线带宽的目的。
在加权优先循环算法中,各主设备在一次循环中的优先级完全由初始的加权因子值决定,故在一次循环中,各主设备优先级是不变的,与固定优先级算法相似。与其相比,本发明提供的基于AMBA总线的自适应实时加权优先仲裁方法及仲裁器,在一次循环中各主设备的加权因子并不是一成不变的,而是根据各主设备的加权因子的变化实时确定。实时加权优先级算法中,每当主设备得到一次总线授权,其对应的加权因子进行减1操作,因此算法会根据新的加权因子值重新确定各主设备的优先级排序,这样就可以在一次循环中减小低优先级的主设备的等待时间,使各个主设备的等待时间趋于平衡,从而提高整个系统的性能。
进一步,本发明提供的基于AMBA总线的自适应实时加权优先仲裁方法及仲裁器,各主设备在一次循环中的初始的加权因子的设定并不是固定的,而是根据系统中各主设备实际发送数据量和各主设备等待时间来确定,这样的设计,可以使各主设备的在一次循环中的初始加权因子比例与主设备对总线带宽的需求近似相等,同时,还可以通过增加等待时间较长主设备的初始加权因子来减少下一次循环时此主设备的等待时间,从而保证了对各主设备带宽进行合理分配,提高了系统性能。
附图说明
图1为AMBA总线仲裁器示意图;
图2为自适应加权因子产生机制示意图;
图3为仲裁器整体结构示意图;
图4为权重位产生模块结构示意图;
图5为优先级产生模块结构示意图;
图6为总线移交判定流程示意图;
图7为锁定传输控制模块状态转换示意图;
图8为仲裁信号输出模块示意图;
图9为自适应实时加权循环仲裁器仿真平台示意图。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
本发明提供的一种基于AMBA总线的自适应实时加权优先仲裁方法,包括以下操作:
在一次完整循环的初始阶段,各主设备的加权因子复位,各个主设备的加权因子为Wi,Wi也决定了一次循环中每个主设备最多得到总线的次数Ci,Wi=Ci;
在一次循环中,各主设备的优先级高低由加权因子决定,加权因子越大的主设备优先级越高;各个主设备的优先级在每一次发生总线仲裁后重新进行排序,当一个主设备得到一次总线授权后,其相应的加权因子递减1,伴随着加权因子的减小,各主设备的优先级实时的发生变化,以新的优先级顺序作为下一次仲裁的依据;当某一个主设备的加权因子减小到0后,各个主设备的加权因子会重新复位,开始下一轮循环。
若一个主设备得到一次总线授权后,其相应的加权因子递减1之后与其他主设备的加权因子相等,此时在前被总线授权的主设备的优先级大于其他主设备。
设各个主设备的加权因子W1>W2>...>Wi...>Wn,则加权因子之和为W:
在一次循环中,各主设备的优先级高低由加权因子决定,加权因子越大的主设备优先级越高。当一个主设备得到一次总线授权后,其相应的加权因子递减1,即Wi=Wi-1,伴随着加权因子的减小,各主设备的优先级也实时的发生变化,这一点与加权优先循环算法不同。各主设备的优先级实时发生变化,虽然增加了设计难度,但缩短了低优先级主机的等待时间,从而使各个主机间等待时间差异减小,小的等待时间差异可以提高主设备间的通信效率,提高系统整体性能。当某一个主设备的加权因子减小到0后,系统的加权因子会重新复位,开始下一轮循环。
具体的,以5个主设备组成的系统为例,来进行说明:
表1自适应实时加权优先仲裁方法中的优先级
在上表中,共有MA、MB、MC、MD、ME五个主设备,各主设备在一次循环中的初始加权因子为WA=7、WB=6、WC=5、WD=4、WE=3,各主设备的优先级根据各主设备的加权因子大小决定,因此,此时刻各主设备的优先级排序为MA>MB>MC>MD>ME,发出总线申请的主设备为MA、MB、MC,根据优先级排序,主设备MA得到总线,在主设备得到总线后,其加权因子相应的减1,且优先级重新排列,故在主设备MA得到总线后,MA的加权因子由7变为6,由于MA和MB的加权因子相同,在第二次仲裁中,新的优先级排序仍为MA>MB>MC>MD>ME,如表1所示;第二轮发出申请的主设备是MA、MB、MC,所以得到总线的仍旧为MA,主设备MA得到总线后,其加权因子再减1变为5,这时最高优先级主设备变为MB,新的优先级排序变为MB>MA>MC>MD>ME。接下来主设备MA和主设备MB同时申请总线,按照新的优先级排序,主设备MB将得到总线授权,依此类推。在表中的最后一行,各主设备的加权因子为WA=3、WB=5、WC=4、WD=4、WE=3,这时候各主设备的优先级排序为MB>MC>MD>MA>ME,当MA和MD同时申请总线时,主设备MD得到总线。
进一步,提出一种自适应加权因子产生机制,如图2所示,加权因子产生过程如下:
主设备传输计数模块对一定时间内各主设备的传输次数进行统计,当任何一个主设备的传输次数达到预设值时,对此段时间内各主设备发送数据次数进行寄存,得到各主设备的传输数据值transX_count。加权因子基础值产生模块是一个纯组合逻辑模块,它根据transX_count值得到各主设备的加权因子基础值D1。与此同时,主设备等待模块对各主设备的等待时间进行记录,当任何一个主设备的等待时间所经历的HCLK周期达到预设值时,对各个主设备的等待时间计数器值waitX_count进行寄存,并通过加权因子修正值产生模块得到加权因子修正值D2。主设备等待计数模块同时负责产生各主设备新的加权因子值,当任何一个主设备的等待时间达到预设值时,主设备等待计数模块发出sample_data信号,同时将加权因子基础值D1、加权因子修正值D2相加取平均值,将结果与当前各主设备加权因子相加,并且再次取平均值,最终得到下一阶段的各主设备加权因子值。至此,实现了各个主设备加权因子值的自适应产生过程。
以自适应实时加权优先循环算法为核心,以5个总线主设备的系统为例设计了基于上述算法的自适应实时加权优先仲裁器,此仲裁器不仅满足AMBA总线多主设备系统基本的仲裁需求,同时还支持锁定传输和分块传输。仲裁器的设计分为权重位产生模块、优先级产生模块、总线移交判定模块、锁定传输模块以及仲裁信号输出模块几个主要部分。所有模块的设计均采用verilog硬件描述语言实现并仿真,且满足AMBA总线的接口标准。
参见图3,基于AMBA总线的自适应实时加权优先仲裁器,其特征在于,包括:
权重位产生模块,该模块通过对总线上各主设备的传输数据的数量和等待时间进行监视,对各主设备的传输需求进行预测,产生各主设备的初始加权因子并将其发送给优先级产生模块;
优先级产生模块,该模块接收权重位产生模块传送过来的各主设备的初始加权因子,以此作为一次循环中各主设备访问次数的初始值;在一次循环中每一次发生总线仲裁,对相应得到总线的主设备的加权因子值进行减1操作,伴随着加权因子的变化,主设备优先级排序也实时发生变化,新的主设备优先级排序将作为仲裁时总线授权的依据,并实时的得到发出总线申请并且具有最高优先级的主设备编号;当各主设备的加权因子中有减小为0的值时,加权因子重新赋值,开始下一次循环;
总线移交判定模块,该模块对总线的控制信号、锁定传输标志以及分块传输控制模块信号进行检测,当控制信号达到总线移交的标准时,总线移交判断模块的输出控制信号有效,发出仲裁许可信号;仲裁信号输出模块接收到输出控制信号有效后,完成一次总线的仲裁和移交。
锁定传输模块,锁定块传输控制模块用来处理主设备的锁定传输申请,当主设备在申请总线的同时声明HLOCK_M[15:0]信号的相应位时,则主设备发起的是一次锁定传输;锁定传输模块确保发起锁定传输的主设备在获得总线后没有其他的主设备被授予总线直至传输结束;当锁定传输结束前,如果从设备发出SPLIT响应,则此时总线主设备将授权给虚拟主设备;
仲裁信号输出模块,该模块在接到总线移交判定模块发出的输出控制信号有效信号后,对优先级产生模块生成的主设备编号进行寄存和译码,并对该主设备所对应HGRANT_M[15:0]信号的相应位进行声明;同时,仲裁信号输出模块还对被授予的主设备编号HMASTER进行输出,表明哪个主设备正在占用总线并进行一次传输;仲裁信号中的锁定传输信号HMASTERLOCK由锁定传输控制模块得到。
下面对仲裁器的各个模块进行详细介绍。
1、权重位产生模块
权重位产生模块是自适应实时加权优先仲裁器的一个核心模块,主要作用是为优先级产生模块提供下一个阶段各主设备的初始加权因子,此模块与优先级产生模块相互配合,完成完整的自适应加权优先算法的功能。权重位产生模块通过对总线上各主设备的传输数据的数量和等待时间进行监视,能对各主设备的传输需求进行预测,从而达到自适应的调节各主设备总线带宽分配的目的。
如图4所示为权重位产生模块结构示意图,由于对各主设备进行数据传输计数和等待时间计数的模块结构基本相同,故图中只画出了对一个总线主设备进行的操作。基础值产生模块和修正值产生模块对所有主设备的监测数据进行排序,然后决定各主设备的基本值和修正值。
具体的权重位产生过程如下所述:
1)系统复位后,各个寄存器赋初始值,此时各主设备的加权因子值为预设值,由于初始状态时并不能确定那个主设备对总线的需求更多,此时各主设备的加权因子均为4'b0000。
2)计数器A和计数器B分别对主设备的数据传输量和等待时间进行统计。数据发送量的确定通过对HTRANS信号和HGRANT_M信号进行检测,当满足(HGRANT_M==1'b1)&&(HTRANS=='HTRANS_NONSEQ)时,可以认为主设备进行了一次数据的发送,相应的计数值trans_count加1;对于等待时间的确定,通过监视HBURST_M信号以及HGRANT_M信号实现,当满足(HBUSREQ_M==1'b1)&&(HGRANT_M!==1'b1)时,表示相应主设备正在申请一次总线,但并未得到总线授权,主设备处于等待状态,相应主设备的等待时间计数值weight_count加1。
3)各主设备的发送数据计数值和等待时间计数值分别和各自的内部比较值比较,当任何一个主设备的数据传输计数器值与预设比较值A相同时,对此刻所有主设备的传输数据计数值trans_count进行寄存,同时对各个计数器值进行清零,准备下一轮计数。与数据传输计数器相似,对于等待时间计数器,当任何一个主设备其计数值与预设比较值B相等时,对各主设备的计数值wait_count进行寄存,并将计数器值清零。值得注意的是,数据传输计数与等待时间计数的清零并不是同步的,它们清零的时刻与预设比较值A和B以及各主设备的传输状态有关。
4)对于采样得到的各主设备数据传输计数器值trans_count和等待时间计数器值wait_count,分别输入到基础值产生模块和修正值产生模块,得到各主设备的4bit二进制加权因子的基础值D1[3:0]和修正值D2[3:0]。基础值D1的产生遵循如下原则:对各个主设备的传输计数值进行排序,如果两个主设备的计数值相等,则根据各个主设备的接口顺序,按照masterA>masterB>mastetC>masterD>masterE的原则进行排列并赋值,给传输计数值最大的主设备赋值为6,其余主设备按照顺序递减,传输计数值最小的主设备赋值为2。修正值D2的产生过程如下:对采样得到的各主设备等待时间计数值进行比较,对于计数值达到预设值B的主设备,将其修正值赋值为10,其余主设备的修正值均为0。
5)对上述得到的各个主设备的加权因子基础值D1和修正值D2相加,对得到的5bit结果取平均值,得到S1[4:1],这个结果与当前各主设备的加权因子值再次相加取平均值,得到S2[4:1]。当等待时间计数器与内部预设值A相等时,发出sample_data信号,对S2[4:1]值进行采样,从而得到下一个阶段各个主设备的加权因子值MASTERx_WEIGHT_VALUE[3:0]。
至此,完成了一次主设备加权因子的自适应生成和刷新,得到的各个主设备的加权因子送入优先级产生模块,并以此为依据,得到最高优先级主设备的编号。
2、优先级产生模块
优先级产生模块是实现自适应实时加权优先仲裁器的另一个核心模块,它接收权重位产生模块传送过来的各主设备的加权因子值masterX_weight_value,以此作为一次循环中各主设备访问次数的初始值,与加权优先循环算法不同,本模块中采用的自适应实时加权优先算法在一次循环中各主设备的优先级并不是一成不变的,每一次发生总线仲裁,都会对相应得到总线的主设备的加权因子值masterX_weight_value进行减1操作,伴随着加权因子的变化,主设备优先级排序也实时发生变化,新的主设备优先级排序将作为仲裁时总线授权的依据,并实时地得到发出总线申请并且具有最高优先级的主设备编号alg_next_master。这样的设计可以克服加权优先循环算法中各主设备在一次循环中优先级不变化而导致的低优先级主设备过长的等待时间。当各主设备的加权因子中有减小为0的值时,加权因子重新赋值,开始下一次循环。
图5为优先级产生模块的结构示意图,其具体可分为以下几个部分:掩膜模块、最高优先级主设备判定模块、分块主设备产生模块以及主设备选择控制模块。
各个模块的具体功能如下:
1)掩膜模块:掩膜模块对各从设备发出的应答信号HRESP和从设备的分块传输请求信号HSPLIT进行检测,当从设备不能立刻响应主设备的传输请求,应答信号HRESP为SPLIT响应时,表示尝试这次传输的总线主设备不应该被授予总线,掩膜模块记录此时占用总线的主设备编号,并对相应的主设备申请进行屏蔽,从而使其他低优先级的主设备占用总线;当发出SPLIT响应的从设备确定能够完成传输时,它就根据刚才记录的主设备序号声明HSPLITx[15:0]信号中适当的位,掩膜模块在接到此信号的同时,解除对相应主设备的屏蔽,以使总线可以及时授予相应的主设备以重试传输。
2)最高优先级主设备判断模块:最高优先级主设备判定模块的主要作用是对各主设备的优先级进行排序,得到申请总线的最高优先级主设备的编号。最高优先级主设备产生过程如下,首先对权重位产生模块传输来的各个主设备的权重值masterX_weight_value进行寄存,作为加权因子计数值count_x的初始值,同时对总线上各主设备的传输状态进行监测,当某个主设备进行一次总线传输后,其相应的加权因子计数值count_x减1,在一轮循环中,各主设备的加权因子以寄存值masterX_weight_value为基础进行递减,优先级排序逻辑根据自适应实时加权优先级算法所述对上述各主设备的加权因子计数值进行比较,实时得到各个主设备的优先级排序,最高优先级产生逻辑根据此排序以及各主设备的申请,得到此刻申请总线且具有最高优先级的主设备编号alg_next_master。在一次循环中,当任何一个主设备的加权因子计数值count_x为0时,选择控制模块将重新载入masterX_weight_value值,作为加权因子计数值的初始值,并开始下一轮判定。
3)分块主设备产生模块:当有从设备声明HSPLIT[15:0]的相应位以发起一次分块传输时,分块主设备产生模块应根据此刻各主设备的优先级排序,将申请分块传输的各主设备中具有最高优先级的主设备编号most_sig_hsplit送入主设备选择控制模块。
4)主设备选择控制模块:此模块对总线申请以及锁定和分块传输信号进行检测,得到不同的控制信号,输出next_master主设备编号。通常情况下由自适应实时加权优先算法得到的主设备alg_next_master将被选择作为下一阶段的总线主设备。以下是几种特殊情况,需要特别说明:
a.当没有发生分块传输时,如果所有主设备申请均被屏蔽,即mask_r==16'b0000_0000_0011_1110时,此时next_master将选择虚拟主设备DUMMY_MASTER。
b.当没有从设备申请总线一次分块传输时且没有主设备申请总线传输,则默认主设备将获得总线,即next_master选择默认总线主设备DEFAULT_MASTER。
c.当发生一次分块传输,即split_arbiter==1'b1时,next_master选择most_sig_hsplit作为下一次的总线主设备。
d.当从设备在一次锁定传输期间发出SPLIT响应请求时,next_master将选择虚拟主设备DUMMY_MASTER作为下一阶段的主设备。
优先级产生模块的输出next_master将被送入仲裁信号输出模块,并通过锁存和译码实现仲裁信号的输出。
3、总线移交判定模块
总线移交判定模块的作用主要是对总线状态进行判断,决定在何种总线状态下进行一次仲裁,并在仲裁条件满足时,发出仲裁许可信号,以控制后续模块完成一次总线的仲裁和移交。总线移交判断模块对总线上的控制信号、锁定传输标志lock_flag以及分块传输控制模块信号split_arbiter进行检测,当控制信号达到总线移交的标准时,总线移交判断模块的输出控制信号require_arbiter有效,仲裁信号输出模块接收到require_arbiter信号后,完成一次总线的仲裁和移交。
如图6所示为总线移交判定模块完成一次总线判定的流程图,总线移交判定模块在以下几种情况下将发起一次总线仲裁:
1)当总线从设备请求一次分块传输,并且当前主设备没有进行一次锁定传输时,即(split_arbiter==1'b1)&&(lock_flag==1'b0)时,总线移交判定模块使require_arbiter信号有效,进而完成一次总线的仲裁,以响应从设备发出的分块传输请求。
2)当从设备没有发出分块传输请求,并且当前主设备的传输不是锁定传输时,有以下几种可能:
a、当(HTRANS==HTRANS_IDLE)时,表示当前主设备没有传输数据,总线移交判定模块使require_arbiter信号有效,进而实现一次总线的仲裁。
b当(HTRANS==HTRANS_NONSEQ)&&(HBURST==HBURST_SINGLE)时,表示当前主设备正在进行一次非连续单一突发传输,则此时总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1。
c、当(HTRANS==HTRANS_SEQ)&&((HBURST==HBURST_WRAP4)||(HBURST==HBURST_INCR4))&&(beat==4'b0011)时,表示当前主设备在进行4拍增量突发或者4拍回环突发的最后一个数据传输周期,总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1。
d、当(HTRANS==HTRANS_SEQ)&&((HBURST==HBURST_WRAP8)||(HBURST==HBURST_INCR8))&&(beat==4'b0111)时,表示当前主设备在进行8拍增量突发或者8拍回环突发的最后一个数据传输周期,总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1。
e、当(HTRANS==HTRANS_SEQ)&&((HBURST==HBURST_WRAP16)||(HBURST==HBURST_INCR16))&&(beat==4'b1111),表示当前主设备在进行4拍增量突发或者4拍回环突发的最后一个数据传输周期时,总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1。
f、需要特别注意的是,当((HTRANS==HTRANS_SEQ)||(HTRANS==HTRANS_SEQ))&&(HBURST==HBURST_INCR)时,即当主设备进行一次不定长突发传输时,是否发起一次总线仲裁,由当前占用总线的主设备决定。当主设备在传输数据的同时继续发出总线申请信号,即HBUSREQ_M[current_master]==1'b1时,总线移交判定模块不发出总线仲裁允许信号;当主设备在传输数据的同时没有发出总线申请信号,此时总线移交判定模块发出总线仲裁允许信号,此时仲裁允许信号为require_arbiter=!HBUSREQ_M[current_master]。
4、锁定传输控制模块
锁定块传输控制模块用来处理主设备的锁定传输申请,当主设备在申请总线的同时声明HLOCK_M[15:0]信号的相应位时,则主设备发起的是一次锁定传输。仲裁器要确保发起锁定传输的主设备在获得总线后没有其他的主设备被授予总线直至传输结束。需要注意的是,当锁定传输结束前,如果从设备发出SPLIT响应,则此时总线主设备将授权给虚拟主设备DUMMY_MASTER以维持总线的正常功能。
如图7所示是锁定传输控制模块的状态转换示意图,锁定传输模块同时还对HMASTERLOCK信号进行声明,以表示一次锁定传输,HMASTERLOCK信号属于仲裁信号的一部分。
5、仲裁信号输出模块
仲裁信号输出模块主要作用是在接到仲裁许可模块发出的required_arbiter信号后,对优先级产生模块生成的主设备编号进行寄存和译码,并对此主设备所对应HGRANT_M[15:0]信号的相应位进行声明,以示一次总线授权生效,同时,仲裁信号输出模块还对被授予的主设备编号HMASTER进行输出,表明哪个主设备正在占用总线并进行一次传输。仲裁信号中的锁定传输信号HMASTERLOCK由锁定传输控制模块得到。仲裁信号输出模块的示意图如图8所示。
通过如图9所示的仿真平台对上述自适应实时加权循环仲裁器进行仿真,对其性能进行验证。图中包括5个具有AMBA-AHB总线接口的主设备模型,仲裁器接收主机的总线申请信号HBUSREQ[15:0]及锁定传输信号HLOCK[15:0],输出仲裁信号。MUX1通过对仲裁器输出信号HMASTER进行译码,将获得授权的主设备发出的控制信号、地址信号以及数据信号输出到总线上,监视模块对各个主机的发送时间和总线授权时间进行记录。图中待测试的仲裁器即为本发明设计的基于自适应实时加权优先仲裁器模块。
通过设定各个主设备不同的发送数据频率,求得理想状态下各主设备的带宽比,对实际仿真中各个主设备申请总线过程中等待时间,即等待的时钟周期数进行记录,可以得到各主设备在一段时间内平均的等待时间,同时记录下各主设备获得总线的次数,进而获得各主设备实际获得总线的带宽比率。
表2、表3、表4所示为本发明仲裁器与固定优先算法仲裁器、轮转优先算法仲裁器以及加权优先循环算法仲裁器在三种不同测试激励下,各主设备的总线带宽值:
表2 激励1下各主设备总线带宽值
表3 激励2下各主设备总线带宽值
表4 激励3下各主设备总线带宽值
由表2、表3、表4可以看出,在不同的激励下,基于本发明算法的仲裁器对总线带宽的分配与各主设备理想带宽值基本保持一致,最大误差绝对值小于5%,实现了本发明自适应调节总线带宽分配的功能。
固定优先级算法仲裁器的接口顺序决定了主设备的优先级,因此低优先级主设备出现了带宽为0的情况,即低优先级主设备出现“饿死”现象;而轮转优先算法仲裁器分配给各个主设备的带宽基本相同,分配过于平均,当主机需要多次连续数据传输时,过于平均的带宽分配,会增加此主机的传输等待时间,降低传输效率;优先循环算法虽然避免了固定优先级低优先级主设备“饿死”的情况,但由于其优先级排序与各主设备的加权因子决定,而加权因子采用固定值,因此当主设备数据发送比率变化时,仲裁器不能随着数据比率的变化合理分配总线带宽。
为了提高主设备间的通信效率,本发明针对加权优先循环算法在一次循环中低优先级主设备与高优先级主设备之间过大的等待时间差异进行了优化。表5所示为加权优先循环算法与本发明算法中各主设备的平均等待时间,同时对各主设备的等待时间标准方差进行计算,通过表3可以看出,本发明算法各主设备等待时间的标准方差远远小于加权优先循环算法的标准方差,这也说明本发明算法的各主设备之间的等待时间差异优于加权有限循环算法,此结论也可以从各主设备平均等待时间的差异中直观地得出,因此,本发明对减小各主设备等待时间差异的改进达到了设计标准。
表5加权优先循环算法与本发明算法中各主设备的等待时间与标准方差
Claims (10)
1.一种基于AMBA总线的自适应实时加权优先仲裁方法,其特征在于,包括以下操作:
在一次完整循环的初始阶段,各主设备的加权因子复位,各个主设备的加权因子为Wi,Wi也决定了一次循环中每个主设备最多得到总线的次数Ci,Wi=Ci;
在一次循环中,各主设备的优先级高低由加权因子决定,加权因子越大的主设备优先级越高;各个主设备的优先级在每一次发生总线仲裁后重新进行排序,当一个主设备得到一次总线授权后,其相应的加权因子递减1,伴随着加权因子的减小,各主设备的优先级实时地发生变化,以新的优先级顺序作为下一次仲裁的依据;当某一个主设备的加权因子减小到0后,各个主设备的加权因子会重新复位,开始下一轮循环。
2.如权利要求1所述的基于AMBA总线的自适应实时加权优先仲裁方法,其特征在于,若一个主设备得到一次总线授权后,其相应的加权因子递减1之后与其他主设备的加权因子相等时,之前被总线授权的主设备的优先级大于其他主设备。
4.如权利要求1所述的基于AMBA总线的自适应实时加权优先仲裁方法,其特征在于,所述的各主设备的加权因子的产生为:
主设备传输计数模块对一定时间内各主设备的传输次数进行统计,当任何一个主设备的传输次数达到预设值时,对此段时间内各主设备发送数据次数进行寄存,得到各主设备的传输数据值transX_count,并将该值发送给加权因子基础值产生模块;加权因子基础值产生模块根据transX_count值得到各主设备的加权因子基础值D1;
与此同时,主设备等待计数模块对各主设备的等待时间进行记录,当任何一个主设备的等待时间所经历的HCLK周期达到预设值时,对各个主设备的等待时间计数器值waitX_count进行寄存,并将该值发送给加权因子修正值产生模块;加权因子修正值产生模块根据waitX_count值得到加权因子修正值D2;
主设备等待计数模块同时负责产生各主设备新的加权因子值,当任何一个主设备的等待时间达到预设值时,主设备等待计数模块发出sample_data信号;同时将加权因子基础值D1、加权因子修正值D2相加取平均值,将结果与当前各主设备加权因子相加,并且再次取平均值,得到下一阶段的各主设备加权因子值。
5.一种基于AMBA总线的自适应实时加权优先仲裁器,其特征在于,包括:
权重位产生模块,该模块通过对总线上各主设备的传输数据的数量和等待时间进行监视,对各主设备的传输需求进行预测,产生各主设备的初始加权因子并将其发送给优先级产生模块;
优先级产生模块,该模块接收权重位产生模块传送过来的各主设备的初始加权因子,以此作为一次循环中各主设备访问次数的初始值;在一次循环中每一次发生总线仲裁,对相应得到总线的主设备的加权因子值进行减1操作,伴随着加权因子的变化,主设备优先级排序也实时发生变化,新的主设备优先级排序将作为仲裁时总线授权的依据,并实时地获得发出总线申请并且具有最高优先级的主设备编号;当各主设备的加权因子中有减小为0的值时,加权因子重新赋值,开始下一次循环;
总线移交判定模块,该模块对总线的控制信号、锁定传输标志以及分块传输控制模块信号进行检测,当控制信号达到总线移交的标准时,总线移交判断模块的输出控制信号有效,发出仲裁许可信号;仲裁信号输出模块接收到输出控制信号有效后,完成一次总线的仲裁和移交;
锁定传输模块,锁定块传输控制模块用来处理主设备的锁定传输申请,当主设备在申请总线的同时声明HLOCK_M[15:0]信号的相应位时,则主设备发起的是一次锁定传输;锁定传输模块确保发起锁定传输的主设备在获得总线后没有其他的主设备被授予总线直至传输结束;当锁定传输结束前,如果从设备发出SPLIT响应,则此时总线主设备将授权给虚拟主设备;
仲裁信号输出模块,该模块在接到总线移交判定模块发出的输出控制信号有效信号后,对优先级产生模块生成的主设备编号进行寄存和译码,并对该主设备所对应HGRANT_M[15:0]信号的相应位进行声明;同时,仲裁信号输出模块还对被授予的主设备编号HMASTER进行输出,表明哪个主设备正在占用总线并进行一次传输;仲裁信号中的锁定传输信号HMASTERLOCK由锁定传输控制模块得到。
6.如权利要求5所述的基于AMBA总线的自适应实时加权优先仲裁器,其特征在于,所述的权重位产生模块包括主设备传输计数模块、基础值产生模块、主设备等待计数模块和修正值产生模块;
各主设备的权重位产生为:
系统复位后,各主设备的加权因子值为预设值,此时各主设备的加权因子相等;
主设备传输计数模块和主设备等待计数模块分别对主设备的数据传输量和等待时间进行统计;当确认主设备进行了一次数据的发送时,相应主设备的传输计数值trans_count加1;当确认主设备正在申请一次总线,但并未得到总线授权,主设备处于等待状态,相应主设备的等待时间计数值weight_count加1;
各主设备的发送数据计数值和等待时间计数值分别和各自的内部比较值比较,当任何一个主设备的数据传输计数器值与预设比较值相同时,对此刻所有主设备的传输数据计数值trans_count进行寄存,同时对各个计数器值进行清零,准备下一轮计数;当任何一个主设备等待时间计数值与预设比较值相等时,对各主设备的计数值wait_count进行寄存,并将计数器值清零;
对于采样得到的各主设备数据传输计数器值trans_count和等待时间计数器值wait_count,分别输入到基础值产生模块和修正值产生模块,得到各主设备的4bit二进制加权因子的基础值D1和修正值D2;
基础值D1的产生为:对各个主设备的传输计数值进行排序,如果两个主设备的计数值相等,则根据各个主设备的接口顺序进行排列并赋值,给传输计数值最大的主设备赋值为特定值,其余主设备按照顺序递减;
修正值D2的产生为:对各主设备等待时间计数值进行比较,对于计数值达到预设值的主设备,将其修正值赋值为特定值,其余主设备的修正值均为0;
将各个主设备的加权因子基础值D1和修正值D2相加,对得到的结果取平均值,得到S1,这个结果与当前各主设备的加权因子值再次相加取平均值,得到S2;
当等待时间计数器与内部预设值相等时,发出sample_data信号,对S2值进行采样,从而得到下一个阶段各个主设备的加权因子值。
7.如权利要求5所述的基于AMBA总线的自适应实时加权优先仲裁器,其特征在于,所述的优先级产生模块包括掩膜模块、最高优先级主设备判定模块、分块主设备产生模块以及主设备选择控制模块;
掩膜模块,该模块对各从设备发出的应答信号HRESP和从设备的分块传输请求信号HSPLIT进行检测,当从设备不能立刻响应主设备的传输请求,应答信号HRESP为SPLIT响应时,表示尝试这次传输的总线主设备不应该被授予总线,掩膜模块记录此时占用总线的主设备编号,并对相应的主设备申请进行屏蔽,从而使其他低优先级的主设备占用总线;当发出SPLIT响应的从设备确定能够完成传输,掩膜模块在接到此信号的同时,解除对相应主设备的屏蔽,以使总线能够及时授予相应的主设备以重试传输;
最高优先级主设备判定模块,该模块对各主设备的优先级进行排序,得到申请总线的最高优先级主设备的编号;最高优先级主设备产生为:
对权重位产生模块传输来的各个主设备的权重值masterX_weight_value进行寄存,作为加权因子计数值count_x的初始值,同时对总线上各主设备的传输状态进行监测,
在一次循环中,各主设备的加权因子以寄存的masterX_weight_value为基础进行递减,优先级排序逻辑对各主设备的加权因子计数值进行比较,实时得到各个主设备的优先级排序;当某个主设备进行一次总线传输后,其相应的加权因子计数值count_x减1;最高优先级产生逻辑根据此排序以及各主设备的申请,得到此刻申请总线且具有最高优先级的主设备编号alg_next_master;
当任何一个主设备的加权因子计数值count_x为0时,主设备选择控制模块将重新载入各个主设备的权重值masterX_weight_value,作为加权因子计数值的初始值,并开始下一轮判定;
分块主设备产生模块,当有从设备声明HSPLIT[15:0]的相应位以发起一次分块传输时,分块主设备产生模块根据此刻各主设备的优先级排序,将申请分块传输的各主设备中具有最高优先级的主设备编号most_sig_hsplit送入主设备选择控制模块;
主设备选择控制模块,该模块对总线申请以及锁定和分块传输信号进行检测,得到不同的控制信号,输出next_master主设备编号。
8.如权利要求5所述的基于AMBA总线的自适应实时加权优先仲裁器,其特征在于,所述的总线移交判定模块在以下几种情况下将发起一次总线仲裁:
1)当总线从设备请求一次分块传输,并且当前主设备没有进行一次锁定传输时,总线移交判定模块使输出控制信号require_arbiter有效,进而完成一次总线的仲裁;
2)当从设备没有发出分块传输请求,并且当前主设备的传输不是锁定传输时,有:
a、当前主设备没有传输数据时,总线移交判定模块使require_arbiter信号有效,实现一次总线的仲裁;
b、当前主设备正在进行一次非连续单一突发传输,则此时总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1;
c、当前主设备在进行4拍增量突发或者4拍回环突发的最后一个数据传输周期,总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1;
d、当前主设备在进行8拍增量突发或者8拍回环突发的最后一个数据传输周期,总线移交判定模块可发起一次仲裁,总线仲裁允许信号require_arbiter=1'b1;
e、当主设备进行一次不定长突发传输时,是否发起一次总线仲裁,由当前占用总线的主设备决定;当主设备在传输数据的同时继续发出总线申请信号时,总线移交判定模块不发出总线仲裁允许信号;当主设备在传输数据的同时没有发出总线申请信号,此时总线移交判定模块发出总线仲裁允许信号。
9.如权利要求5所述的基于AMBA总线的自适应实时加权优先仲裁器,其特征在于,所述的锁定块传输控制模块同时还对HMASTERLOCK信号进行声明,以表示一次锁定传输,HMASTERLOCK信号属于仲裁信号的一部分。
10.如权利要求5所述的基于AMBA总线的自适应实时加权优先仲裁器,其特征在于,所述的自适应实时加权优先仲裁器接收主机的总线申请信号HBUSREQ[15:0]及锁定传输信号HLOCK[15:0],输出仲裁信号;MUX1通过对仲裁器输出信号HMASTER进行译码,将获得授权的主设备发出的控制信号、地址信号以及数据信号输出到总线上,监视模块对各个主机的发送时间和总线授权时间进行记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210575069.8A CN103077141B (zh) | 2012-12-26 | 2012-12-26 | 一种基于amba总线的自适应实时加权优先仲裁方法及仲裁器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201210575069.8A CN103077141B (zh) | 2012-12-26 | 2012-12-26 | 一种基于amba总线的自适应实时加权优先仲裁方法及仲裁器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103077141A true CN103077141A (zh) | 2013-05-01 |
CN103077141B CN103077141B (zh) | 2015-08-26 |
Family
ID=48153672
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201210575069.8A Expired - Fee Related CN103077141B (zh) | 2012-12-26 | 2012-12-26 | 一种基于amba总线的自适应实时加权优先仲裁方法及仲裁器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103077141B (zh) |
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104581172A (zh) * | 2014-12-08 | 2015-04-29 | 北京中星微电子有限公司 | 一种实现svc宏块级算法的硬件结构 |
CN104794079A (zh) * | 2015-03-31 | 2015-07-22 | 华为技术有限公司 | 一种总线仲裁的方法、装置及系统 |
CN105573951A (zh) * | 2015-12-24 | 2016-05-11 | 哈尔滨理工大学 | 一种针对数据流传输的ahb总线接口系统 |
CN106776423A (zh) * | 2016-11-25 | 2017-05-31 | 天津大学 | 采用优先级自动切换仲裁单元的异步仲裁树电路 |
CN106951391A (zh) * | 2017-02-15 | 2017-07-14 | 合肥芯荣微电子有限公司 | 一种芯片内点对点互连总线访问屏蔽系统和方法 |
CN107430758A (zh) * | 2015-03-25 | 2017-12-01 | 赛灵思公司 | 自适应视频直接存储器存取模块 |
CN108388337A (zh) * | 2013-12-16 | 2018-08-10 | 高通股份有限公司 | 计算设备中的功率节省技术 |
CN109697310A (zh) * | 2018-12-07 | 2019-04-30 | 天津津航计算技术研究所 | 一种应用于ahb总线矩阵设计的功能验证方法与系统 |
CN110300040A (zh) * | 2018-03-22 | 2019-10-01 | 华为技术有限公司 | 一种通信方法及相关设备 |
CN110889232A (zh) * | 2019-12-03 | 2020-03-17 | 中国航发控制系统研究所 | 多系统间多余度信号考虑优先级的加权平均表决方法 |
CN111090600A (zh) * | 2019-12-09 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种总线共享的方法 |
CN111478840A (zh) * | 2020-04-15 | 2020-07-31 | 联合华芯电子有限公司 | 用于总线系统的双速率仲裁中继设备 |
CN111625377A (zh) * | 2017-04-01 | 2020-09-04 | 北京忆芯科技有限公司 | 代理及向队列添加条目的方法 |
CN112399112A (zh) * | 2019-08-12 | 2021-02-23 | 天津大学青岛海洋技术研究院 | 一种轮权与权重相结合的仲裁模式 |
CN113760805A (zh) * | 2021-07-31 | 2021-12-07 | 浪潮电子信息产业股份有限公司 | 一种ahb总线仲裁系统、方法、设备及可读存储介质 |
CN113886305A (zh) * | 2021-09-30 | 2022-01-04 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于总线的仲裁方法、系统、存储介质及设备 |
CN114756491A (zh) * | 2022-04-20 | 2022-07-15 | 电子科技大学 | 一种基于群体决策算法的总线仲裁器及其实现方法 |
CN115378762A (zh) * | 2022-10-25 | 2022-11-22 | 芯动微电子科技(珠海)有限公司 | 一种总线传输性能动态调度方法及装置 |
CN115640257A (zh) * | 2022-12-14 | 2023-01-24 | 摩尔线程智能科技(北京)有限责任公司 | 用于片上网络的通路仲裁方法、仲裁器以及片上路由器 |
USRE49591E1 (en) | 2013-12-16 | 2023-07-25 | Qualcomm Incorporated | Power saving techniques in computing devices |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1383074A (zh) * | 2002-04-17 | 2002-12-04 | 威盛电子股份有限公司 | 总线控制权仲裁方法与仲裁器 |
CN1479542A (zh) * | 2002-08-30 | 2004-03-03 | 深圳市中兴通讯股份有限公司上海第二 | 一种公平的总线仲裁方法及仲裁装置 |
CN101288057A (zh) * | 2005-08-19 | 2008-10-15 | 高通股份有限公司 | 基于传送方向及耗用带宽的加权总线仲裁 |
WO2012167526A1 (zh) * | 2011-06-07 | 2012-12-13 | 北京北大众志微系统科技有限责任公司 | 一种片上总线仲裁方法及装置 |
-
2012
- 2012-12-26 CN CN201210575069.8A patent/CN103077141B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1383074A (zh) * | 2002-04-17 | 2002-12-04 | 威盛电子股份有限公司 | 总线控制权仲裁方法与仲裁器 |
CN1479542A (zh) * | 2002-08-30 | 2004-03-03 | 深圳市中兴通讯股份有限公司上海第二 | 一种公平的总线仲裁方法及仲裁装置 |
CN101288057A (zh) * | 2005-08-19 | 2008-10-15 | 高通股份有限公司 | 基于传送方向及耗用带宽的加权总线仲裁 |
WO2012167526A1 (zh) * | 2011-06-07 | 2012-12-13 | 北京北大众志微系统科技有限责任公司 | 一种片上总线仲裁方法及装置 |
Non-Patent Citations (2)
Title |
---|
李玲等: "AHB总线仲裁器的设计", 《电子工程师》, vol. 31, no. 1, 31 January 2005 (2005-01-31), pages 23 - 25 * |
马泰生等: "多端口存储控制器IP核的研究", 《西安电子科技大学学报(自然科学版)》, vol. 37, no. 1, 28 February 2010 (2010-02-28), pages 142 - 147 * |
Cited By (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE49591E1 (en) | 2013-12-16 | 2023-07-25 | Qualcomm Incorporated | Power saving techniques in computing devices |
CN108388337A (zh) * | 2013-12-16 | 2018-08-10 | 高通股份有限公司 | 计算设备中的功率节省技术 |
USRE49652E1 (en) | 2013-12-16 | 2023-09-12 | Qualcomm Incorporated | Power saving techniques in computing devices |
CN108388337B (zh) * | 2013-12-16 | 2021-08-20 | 高通股份有限公司 | 计算设备中的功率节省技术 |
CN104581172A (zh) * | 2014-12-08 | 2015-04-29 | 北京中星微电子有限公司 | 一种实现svc宏块级算法的硬件结构 |
CN107430758A (zh) * | 2015-03-25 | 2017-12-01 | 赛灵思公司 | 自适应视频直接存储器存取模块 |
CN104794079A (zh) * | 2015-03-31 | 2015-07-22 | 华为技术有限公司 | 一种总线仲裁的方法、装置及系统 |
WO2016155540A1 (zh) * | 2015-03-31 | 2016-10-06 | 华为技术有限公司 | 一种总线仲裁的方法、装置及系统 |
CN105573951A (zh) * | 2015-12-24 | 2016-05-11 | 哈尔滨理工大学 | 一种针对数据流传输的ahb总线接口系统 |
CN105573951B (zh) * | 2015-12-24 | 2018-02-09 | 哈尔滨理工大学 | 一种针对数据流传输的ahb总线接口系统 |
CN106776423A (zh) * | 2016-11-25 | 2017-05-31 | 天津大学 | 采用优先级自动切换仲裁单元的异步仲裁树电路 |
CN106776423B (zh) * | 2016-11-25 | 2019-08-20 | 天津大学 | 采用优先级自动切换仲裁单元的异步仲裁树电路 |
CN106951391B (zh) * | 2017-02-15 | 2020-02-11 | 合肥芯荣微电子有限公司 | 一种芯片内点对点互连总线访问屏蔽系统和方法 |
CN106951391A (zh) * | 2017-02-15 | 2017-07-14 | 合肥芯荣微电子有限公司 | 一种芯片内点对点互连总线访问屏蔽系统和方法 |
CN111625377A (zh) * | 2017-04-01 | 2020-09-04 | 北京忆芯科技有限公司 | 代理及向队列添加条目的方法 |
CN111625377B (zh) * | 2017-04-01 | 2023-11-28 | 北京忆芯科技有限公司 | 代理及向队列添加条目的方法 |
CN110300040A (zh) * | 2018-03-22 | 2019-10-01 | 华为技术有限公司 | 一种通信方法及相关设备 |
CN110300040B (zh) * | 2018-03-22 | 2021-10-01 | 华为技术有限公司 | 一种通信方法及相关设备 |
CN109697310B (zh) * | 2018-12-07 | 2020-07-21 | 天津津航计算技术研究所 | 一种应用于ahb总线矩阵设计的功能验证方法与系统 |
CN109697310A (zh) * | 2018-12-07 | 2019-04-30 | 天津津航计算技术研究所 | 一种应用于ahb总线矩阵设计的功能验证方法与系统 |
CN112399112A (zh) * | 2019-08-12 | 2021-02-23 | 天津大学青岛海洋技术研究院 | 一种轮权与权重相结合的仲裁模式 |
CN112399112B (zh) * | 2019-08-12 | 2023-04-07 | 天津大学青岛海洋技术研究院 | 一种轮权与权重相结合的仲裁模式 |
CN110889232A (zh) * | 2019-12-03 | 2020-03-17 | 中国航发控制系统研究所 | 多系统间多余度信号考虑优先级的加权平均表决方法 |
CN110889232B (zh) * | 2019-12-03 | 2022-12-13 | 中国航发控制系统研究所 | 多系统间多余度信号考虑优先级的加权平均表决方法 |
CN111090600A (zh) * | 2019-12-09 | 2020-05-01 | 苏州浪潮智能科技有限公司 | 一种总线共享的方法 |
CN111478840A (zh) * | 2020-04-15 | 2020-07-31 | 联合华芯电子有限公司 | 用于总线系统的双速率仲裁中继设备 |
CN113760805A (zh) * | 2021-07-31 | 2021-12-07 | 浪潮电子信息产业股份有限公司 | 一种ahb总线仲裁系统、方法、设备及可读存储介质 |
CN113886305A (zh) * | 2021-09-30 | 2022-01-04 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于总线的仲裁方法、系统、存储介质及设备 |
CN113886305B (zh) * | 2021-09-30 | 2023-11-03 | 山东云海国创云计算装备产业创新中心有限公司 | 一种基于总线的仲裁方法、系统、存储介质及设备 |
CN114756491A (zh) * | 2022-04-20 | 2022-07-15 | 电子科技大学 | 一种基于群体决策算法的总线仲裁器及其实现方法 |
CN115378762A (zh) * | 2022-10-25 | 2022-11-22 | 芯动微电子科技(珠海)有限公司 | 一种总线传输性能动态调度方法及装置 |
CN115378762B (zh) * | 2022-10-25 | 2023-06-20 | 芯动微电子科技(珠海)有限公司 | 一种总线传输性能动态调度方法及装置 |
CN115640257A (zh) * | 2022-12-14 | 2023-01-24 | 摩尔线程智能科技(北京)有限责任公司 | 用于片上网络的通路仲裁方法、仲裁器以及片上路由器 |
Also Published As
Publication number | Publication date |
---|---|
CN103077141B (zh) | 2015-08-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103077141B (zh) | 一种基于amba总线的自适应实时加权优先仲裁方法及仲裁器 | |
US5519837A (en) | Pseudo-round-robin arbitration for a shared resource system providing fairness and high throughput | |
US4779089A (en) | Bus arbitration controller | |
CN110109847A (zh) | Apb总线多个主设备的仲裁方法、系统及存储介质 | |
US5862353A (en) | Systems and methods for dynamically controlling a bus | |
US6996684B2 (en) | Multiple-grant controller with parallel arbitration mechanism and related method | |
JP2006523895A5 (zh) | ||
JPH0210979B2 (zh) | ||
KR100252752B1 (ko) | 다단계 제어 버스 중재장치 | |
US6415369B1 (en) | Shared devices and memory using split bus and time slot interface bus arbitration | |
US7373450B2 (en) | Multi-layer bus system having a bus control circuit | |
CA2140685A1 (en) | Bus master arbitration circuitry having improved prioritization | |
EP2625619B1 (en) | Arbitrating stream transactions based on information related to the stream transaction(s) | |
CN101145140A (zh) | 基于片上多处理器系统的动态自适应总线仲裁器 | |
US20070255873A1 (en) | Arbitrator and its arbitration method | |
Vernon et al. | Distributed round-robin and first-come first-serve protocols and their applications to multiprocessor bus arbitration | |
JP3485464B2 (ja) | マルチプロセッサ・システムにおけるバス・アービトレーションの方法及び装置 | |
JPH0210459A (ja) | バス使用権決定方式 | |
Hwang et al. | Implementation of a self-motivated arbitration scheme for the multilayer AHB busmatrix | |
Doifode et al. | Dynamic lottery bus arbiter for shared bus system on chip: a design approach with VHDL | |
CN1936871A (zh) | 嵌入式系统以及仲裁方法 | |
KR101013769B1 (ko) | 버스 중재방법 및 장치 | |
JP2007164428A (ja) | バス調停回路及びそれを用いたマルチレイヤバスシステム | |
Ma et al. | A parallel low latency bus on chip for packet processing MPSoC | |
Suh et al. | IP Based Design 2003 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150826 Termination date: 20181226 |
|
CF01 | Termination of patent right due to non-payment of annual fee |