具体实施方式
<整个系统的配置>
计算机系统包括通过共享总线互连的多个总线主控器,包括用作总线主控器的CPU。具体而言,最近开发的多处理器具有通过共享总线连接的多个处理器或多个总线主控器。在具有多个总线主控器的这种系统中,用于仲裁总线访问请求的仲裁电路扮演了重要角色。
首先,参考图1,描述应用本发明的仲裁电路的示例数据处理系统的总体配置。
图1中所示的数据处理系统具有作为总线主控器的四个处理器P0、P1、P2和P3,其中每个处理器通过共享的单个总线SB连接于被访问的部件TG(以下被称为目标),如存储器。
处理器P0到P3分别输出请求RQ0、RQ1、RQ2和RQ3,并且总线访问请求RQ0到RQ3被发送给仲裁电路1。
处理器P0到P3亦提供优先权信息PR0、PR1、PR2和PR3的输出,其亦被发送给仲裁电路1。当来自处理器的总线访问请求被阻塞时,仲裁电路1依照组合基于循环法控制的优先权顺序和基于来自处理器的优先权信息PR0到PR3的优先权顺序的方案来执行仲裁过程。仲裁电路然后输出处理器选择信号SE以允许处理器使用总线。
然后来自被允许使用总线的处理器的请求作为目标访问请求TAC从仲裁电路1被发送到目标TG,然后它在目标中被处理。处理结果被发送回处理器。
本发明被应用于仲裁电路1以确保公平的总线访问。
<A.第一优选实施例>
上述仲裁电路1的配置和工作现在被描述为本发明的第一优选实施例。
<A-1.设备的配置>
<A-1-1.处理器的配置>
首先,参考图2来描述图1中所示的处理器P0到P3的示例配置。处理器P0到P3具有相同的配置,并且为了举例,图2示出处理器P0。
如图2中所示,处理器P0包括CPU(中央处理单元)11、MMU(存储器管理单元)12、指令高速缓冲存储器13和数据高速缓冲存储器14。选择器15选择来自指令高速缓冲存储器13和数据高速缓冲存储器14的请求RQA和RQB之一并将所选的一个输出为请求RQ0。
处理器P0亦包括优先权产生电路16。优先权产生电路16产生优先权值,与总线访问请求一起它被输出为优先权信息PR0。优先权产生电路16在例如预定软件的基础上依照处理器的优先权水平产生适当的优先权值。
尽管图2的处理器P0具有单个的优先权产生电路16,指令高速缓冲存储器13和数据高速缓冲存储器14可被提供有如在图3的处理器POX中所示的相应优先权产生电路16。
也就是说,优先权信息条PRA和PRB可分别被提供以与来自指令高速缓冲存储器13的请求(例如取指令)RQA和来自数据高速缓冲存储器14的请求(例如数据访问)RQB一致。在此情况下,当选择请求之一时,选择器151比较优先权信息条PRA和PRB并选择具有较高优先权的请求以输出请求RQ0和优先权信息PR0。
<A-1-2.仲裁电路的配置>
接下来,参考图4到6来描述仲裁电路1的配置。
图4是示出仲裁电路1的配置的方块图。如图4中所示,仲裁电路1包括优先权检查块21和循环法块22。
优先权检查块21检查从处理器提供的优先权信息条以了解哪个处理器正输出最高优先权的信息,即了解哪个是最高优先权的处理器,并将检查的结果(CHK)输出给循环法块22。
保持先前仲裁过程的结果的循环法块22在优先权检查结果CHK和从先前结果产生的循环法顺序的基础上产生并输出处理器选择信号SE。
<A-1-2-1.优先权检查块>
接下来,参考图5来描述优先权检查块21的配置。
如图5中所示,优先权检查块21以比赛的形式来比较优先权水平以输出最终的检查结果。优先权检查块21包括第一级检查电路211和212以及接收并比较来自第一级检查电路211和212的输出的最后级检查电路213。
第一级检查电路211接收4位的优先权信息PR0和4位的优先权信息PR1并将优先权检查的结果输出为2位的选择位SB1和4位的输出优先权OP1。第一级检查电路212接收4位的优先权信息PR2和4位的优先权信息PR3并将比较的结果输出为2位的选择位SB2和4位的输出优先权OP2。
选择位SB1和SB2以及输出优先权OP1和OP2被给予下一级,即最后级检查电路213。最后级检查电路213比较它们以输出4位的优先权检查结果CHK。
图5的优先权检查块21的电路配置可通过简单地增加或减少检查电路的数量而适合于各种数量的处理器。例如,当处理器的数量被加倍时,即当八个处理器被提供时,则可通过添加两个第一级检查电路并在第一级检查电路和最后级检查电路之间提供用于检查来自第一级检查电路的输出的新检查电路来改变电路配置。
在此情况下,尽管处理器的数量被加倍,检查电路的级数仅被增加一。这样,优先权检查块中的延迟时间不与处理器的数量成比例增加。
优先权检查块21的工作被更具体地描述。假定来自处理器P0的优先权信息被取为Priority(0)(在以下,优先权信息被称为优先权值,这是因为它是由数字表示的),并且来自处理器P1的优先权值被取为Priority(1)。当定义较小的优先权值表示较高的优先权水平时,则第一级检查电路211如表1中所示提供输出。第一级检查电路212以相同的方式提供处理器P2和P3之间的比较的结果。
表1
请求0 |
请求1 |
优先权值比较 |
选择位 |
输出优先权 |
0 |
0 |
无关 |
2b00 | |
1 |
0 |
无关 |
2b10 |
Priority(0) |
0 |
1 |
无关 |
2b01 |
Priority(1) |
1 |
1 |
Priority(0)>Priority(1) |
2b01 |
Priority(1) |
1 |
1 |
Priority(0)=Priority(1) |
2b11 |
Priority(0)或(1) |
1 |
1 |
Priority(0)<Priority(1) |
2b10 |
Priority(0) |
现在参考表1来描述第一级检查电路211的工作。每个都由一个位形成的请求0和请求1分别表示处理器P0和P1是否正提出总线访问请求,其中“0”表示总线访问请求的不存在而“1”表示总线访问请求的存在。
在优先权值比较的列中,“无关”意味着当没有处理器正发出总线访问请求时以及当仅一个处理器正发出总线访问请求时,不需要第一级检查电路比较优先权值。
也就是说,当没有处理器正发出总线访问请求时,比较是没有意义的。当仅一个处理器正发出总线访问请求时,发出总线访问请求的处理器可被无条件地选择。
当两个处理器都在发出相应的总线访问请求时,则必须比较优先权值。
现在,比较结果包括三种型式:Priority(0)大于Priority(1);Priority(0)等于Priority(1);以及Priority(0)小于Priority(1)。
然后在优先权值比较的结果的基础上确定2位的选择位。
也就是说,当一个处理器正发出请求时,被指定给那个处理器的位被设置为1,而用于另一个处理器的位被设置为0。当两个处理器都在发出请求时,选择位依赖于优先权值比较的结果。
具体而言,当没有处理器正发出总线访问请求时,“00”被输出为选择位。表1中的表示“2b00”表明信号是2位的。
当仅处理器P0正发出总线访问请求时,“10”被输出为选择位;当仅处理器P1正发出总线访问请求时,“01”被输出为选择位。
当两个处理器都在发出相应的总线访问请求并且Priority(0)大于Priority(1),即处理器P1具有比处理器P0高的优先权水平时,则“01”被输出为选择位。当Priority(0)和Priority(1)相等时,则“11”被输出为选择位。当Priority(0)小于Priority(1)时,则“10”被输出为选择位。
尽管所选处理器的优先权值与选择位一起被输出为4位的输出优先权,当选择位是“00”时,输出优先权可以取任何值。当仅一个处理器正发出请求时,那个处理器的优先权值被提供为输出。当两个处理器都在发出请求时,在优先权值比较的基础上,第一级检查电路输出有较高优先权水平的处理器即这里的具有较小优先权值的处理器的优先权值;当两个优先权值相等时,它们的任何一个可被输出。
最后级检查电路213从第一级检查电路211和212接收选择位SB1和SB2并输出与在四个处理器中优先权水平比较的最终结果一致的优先权检查结果CHK。
现在,当来自第一级检查电路211和212的输出优先权被分别取为Priority(01)和Priority(23)而从第一级检查电路211和212输出的选择位被分别取为Selb(01)和Selb(23)时,则最后级检查电路213如以下的表2中所示提供其输出。
表2
Selb(01) |
Selb(23) |
优先权值比较 |
最终检查结果 |
2b00 |
2b00 |
无关 |
4b0000 |
2b00 |
非2b00 |
无关 |
{2b00,Selb(23)} |
非2b00 |
2b00 |
无关 |
{Selb(01),2b00} |
非2b00 |
非2b00 |
Priority(01)>Priority(23) |
{2b00,Selb(23)} |
非2b00 |
非2b00 |
Priority(01)=Priority(23) |
{Selb(01),Selb(23)} |
非2b00 |
非2b00 |
Priority(01)<Priority(23) |
{Selb(01),2b00} |
现在,参考表2来描述最后级检查电路213的工作。首先,最后级检查电路213比较从第一级检查电路211和212输出的选择位,而不是第一级检查电路211和212处的总线访问请求。
当选择位Selb(01)和Selb(23)均为“00”时,则不需要优先权值比较过程并且最后级检查电路213将“0000”输出为最终检查结果。表2中的表示“4b0000”表明信号是4位的。
当仅一组选择位Selb(01)和Selb(23)为“00”时,亦不需要优先权值比较过程,在此情况下,最后级检查电路213将4位的值输出为最终检查结果,在该值中选择位Selb(01)和Selb(23)的值以该顺序被安排。
例如,仅选择位Selb(01)为“00”时,则它输出“2b00,Selb(23)”。表示“2b00,Selb(23)”表明高位的两个位为“00”而低位的2个位为“Selb(23)”的4位值。
当没有一个选择位Selb(01)和Selb(23)为“00”时,比较过程是必要的,在此情况下,相应的优先权值被比较。
比较的结果包括三种型式:Priority(01)大于Priority(23);Priority(01)等于Priority(23);以及Priority(01)小于Priority(23)。
然后在优先权值比较的基础上,最终检查结果被输出为4位的值,其中选择位Selb(01)和Selb(23)的值以该顺序被安排。在此情况下,较高优先权的选择位,即具有较小优先权值的选择位被完整无缺地输出,但具有较大优先权值的选择位被输出为“00”。
更具体而言,当Priority(01)大于Priority(23)时,最终检查结果为“2b00,Selb(23)”;当Priority(01)小于Priority(23)时,则最终检查结果为“Selb(01),2b00”。
当Priority(01)和Priority(23)相等时,两组选择位均被输出为“Selb(01),Selb(23)”。
<A-1-2-2.循环法块>
接下来,参考图6来描述循环法块22的配置。
如图6中所示,循环法块22包括循环法控制单元221、循环法屏蔽单元222和最终选择单元223。
循环法控制单元221包括最高优先权处理器编号产生电路2211和循环法顺序保持寄存器2212。在先前仲裁过程结果的基础上,最高优先权处理器编号产生电路2211产生包括新的最高优先权处理器编号PN的循环法顺序RR,其被保持在循环法顺序保持寄存器2212中。循环法顺序保持寄存器2212根据仲裁过程的时序来输出最高优先权处理器编号PN。
最高优先权处理器编号产生电路2211工作以使最低访问优先权被指定给在先前仲裁过程中获得总线访问的处理器。
循环法屏蔽单元222包括屏蔽产生电路2221和屏蔽电路2222。屏蔽产生电路2221接收从循环法控制单元221输出的最高优先权处理器编号PN并产生用于屏蔽给定数据的屏蔽数据MD。屏蔽电路2222接收来自屏蔽产生电路2221的屏蔽数据MD和从优先权检查块21输出的优先权检查结果CHK并执行AND操作以屏蔽优先权检查结果,从而输出4位的经屏蔽的检查结果MCH。
屏蔽数据MD是4位的数据,其最高位的位被指定给处理器P0而其余三个位以P1、P2和P3的顺序被指定给处理器P1、P2和P3。屏蔽数据MD被产生以使被指定给最高优先权处理器编号的位和随后的位均被设置为“1”从而不屏蔽关于最高优先权处理器和被指定给随后位的处理器的优先权数据,并且使在被指定给最高优先权处理器编号之前的位均被设置为“0”从而屏蔽关于被指定给在最高优先权处理器位之前的位的处理器的优先权数据。
以下的表3示出最高优先权处理器编号的清单和对应的屏蔽数据MD。
表3
最高优先权处理器编号 |
屏蔽数据 |
处理器P0 |
4b1111 |
处理器P1 |
4b0111 |
处理器P2 |
4b0011 |
处理器P3 |
4b0001 |
如表3中所示,当最高优先权处理器是处理器P0时,包括最高位的位的所有位被设置为“1”(即关于所有处理器的优先权数据被保持未屏蔽),这是由于最高位的位对应于处理器P0。在此情况下,屏蔽数据MD被提供为“1111”。类似地,当最高优先权处理器是处理器P1时,屏蔽数据MD被提供为“0111”(即仅关于处理器P0的优先权数据被屏蔽)。当最高优先权处理器是处理器P2时,则屏蔽数据MD被提供为“0011”(即仅关于处理器P0和P1的优先权数据被屏蔽),并且当最高优先权处理器是处理器P3时,则屏蔽数据MD被提供为“0001”(即关于处理器P0到P2的优先权数据被屏蔽)。
假定循环法控制单元221表明最高优先权处理器是处理器P2,并且优先权检查块21已确定处理器P0和P3正呈现相同的最高优先权值。则屏蔽电路2222将“0011”接收为屏蔽数据MD并将“1001”接收为优先权检查结果CHK。
然后屏蔽电路2222进行AND操作以将“0001”提供为经屏蔽的检查结果MCH。
从屏蔽电路2222输出的经屏蔽的检查结果MCH和从优先权检查块21输出的优先权检查结果CHK被提供给最终选择单元223。
经屏蔽的检查结果MCH作为输入的高位的4位被提供给最终选择单元223,而优先权检查结果CHK作为输入的低位的4位被提供。
最终选择单元223例如由优先权编码器形成。它从最高位位置搜索输入数据以寻找“1”首先出现的位置。从该位置,最终选择单元223获得请求应被接受的处理器的编号。
也就是说,4位的经屏蔽的检查结果MCR和4位的优先权检查结果以该顺序被安排,同时最高位的位被指定给处理器P0,而随后的位依次被指定给处理器P1、P2和P3,并且同时第五位被再次指定给处理器P0,而随后的位被指定给处理器P1、P2和P3。则被指定给“1”首先出现的位位置的编号的处理器对应于请求应被接受即处理器被许可总线访问的处理器。
例如,当处理器P1具有最高优先权时,优先权检查结果CHK是“0100”,并且循环法顺序是P2、P3、P0、P1,然后屏蔽数据MD是“0011”(第三位被指定给处理器P2,而随后的位均被设置为“1”)。然后屏蔽电路2222对屏蔽数据MD和优先权检查结果CHK执行AND以获得“0000”作为经屏蔽的检查结果MCH。
因此,至最终选择单元223的输入是0000_0100(高位的4位对应于经屏蔽的检查结果,而低位的4位对应于优先权检查结果CHK)。
对于在最终选择单元223中被编码的结果,第一个“1”在第六位的位置被检测到,并且处理器P1被确定为请求被接受的处理器。
当仲裁电路1已接受请求时,它将目标访问请求TAC输出给目标TG。用处理器选择信号SE选择的处理器将请求的内容输出到共享总线SB上。在目标访问请求TAC正被确立(assert)的同时,目标TG接收在共享总线SB上载运的数据,并且它处理该数据并通过共享总线SB将结果发送给所述处理器。
<A-2.设备的操作>
图7是示出上述仲裁操作的总体的时序图。现在参考图4到6来描述讲授如何阅读时序图的一些典型的实例。
图7中的请求RQ0到RQ3表示当信号脉冲为高时正在提出总线访问请求。最高级处理器编号表示在为简单起见用数字0到3表示的处理器P0到P3中被列为最高的处理器的编号。当最高级被指定给处理器P0时,处理器P1、P2和P3以该顺序被排列,而当最高级被指定给处理器P3时,处理器P0、P1和P2以该顺序被排列。这样,排列是依照所谓的循环法控制来进行的,并因此被称为循环法顺序。
尽管用于优先权信息PR0、PR1、PR2和PR3的优先权值可以取从0到15的16个值,在此假定处理器使用值1到4。
被接受的处理器的编号表示作为通过仲裁电路1仲裁的最终结果,总线访问请求应被接受的处理器的编号,为简单起见,该处理器用数字0到3来表示。
在图7所示的周期T1中,仅处理器P0和P2正在提出总线访问请求,并且循环法顺序是0、1、2、3,因此图6的屏蔽产生电路输出屏蔽数据“1111”。
处理器P0具有优先权值2(Priority(0)=2),而处理器P2具有优先权值4(Priority(2)=4)。
在此情况下,作为处理器P0和P1之间的比较的结果,图5的优先权检查块21中的第一级检查电路211提供“10”作为选择位Selb(01),而作为处理器P2和P3之间的比较的结果,第一级检查电路212提供“10”作为选择位Selb(23)。
同样,第一级检查电路211输出“2”作为输出优先权(Priority(01)=2),并且第一级检查电路212输出“4”作为输出优先权(Priority(23)=4)。
因此,最后级检查电路213提供“1000”作为优先权检查结果,并且循环法屏蔽单元2222对屏蔽数据“1111”和优先权检查结果“1000”进行AND以提供经屏蔽的检查结果“1000”。
然后来自图6的屏蔽电路2222的经屏蔽的检查结果“1000”和来自优先权检查块21的优先权检查结果“1000”被分别提供给最终选择单元223作为8位的数据(1000-1000)中高位的4位和低位的4位。
然后,由最终选择单元223编码的结果确定来自处理器P0的请求应被接受。
在周期T2中,处理器P0、P2和P3正在提出总线访问请求。对于循环法顺序,由于从处理器P0进行的总线访问在周期T1中被接受,图6的最高优先权处理器编号产生电路2211在循环法控制的基础上设置循环法顺序为1、2、3、0,因此屏蔽产生电路2221输出屏蔽数据“0111”。
处理器P0的优先权值是4(Priority(0)=4),处理器P2的优先权值是4(Priority(2)=4),并且处理器P3的优先权值是4(Priority(3)=4)。当多个主控器由此具有相同的优先权并且没有有较高优先权的主控器时,可以说有具有最高优先权的多个主控器。
在此情况下,从处理器P0和P1之间的比较,优先权检查块21中的第一级检查电路211提供“10”作为选择位Selb(01),而从处理器P2和P3之间的比较,第一级检查电路212提供“11”作为选择位Selb(23),这是因为处理器P2和P3的优先权值相等。
第一级检查电路211亦提供输出优先权4(Priority(01)=4),并且第一级检查电路212提供输出优先权4(Priority(23)=4)。
因此,最后级检查电路213提供“1011”作为优先权检查结果,并且循环法屏蔽单元2222对屏蔽数据“0111”和优先权检查结果“1011”进行AND以提供经屏蔽的检查结果“0011”。
然后来自屏蔽电路2222的经屏蔽的检查结果“0011”和来自优先权检查块21的优先权检查结果“1011”被分别提供给最终选择单元223作为8位的数据(0011-1011)中高位的4位和低位的4位。
然后,最终选择单元223编码该数据并确定来自处理器P2的请求应被接受。
在周期T6中,仅处理器P1和P2正在提出总线访问请求,并且循环法顺序是3、0、1、2,因此图6的屏蔽产生电路2221输出屏蔽数据“0001”。
处理器P1的优先权值是4(Priority(1)=4),并且处理器P2的优先权值是4(Priority(2)=4)。
然后,从处理器P0和P1之间的比较,图5的优先权检查块21中的第一级检查电路211提供“01”作为选择位Selb(01),而从处理器P2和P3之间的比较,第一级检查电路212提供“10”作为选择位Selb(23)。
第一级检查电路211亦提供输出优先权4(Priority(01)=4),并且第一级检查电路212提供输出优先权4(Priority(23)=4)。
因此,最后级检查电路213提供“0110”作为优先权检查结果,并且循环法屏蔽单元2222对屏蔽数据“0001”和优先权检查结果“0110”进行AND以提供“0000”作为经屏蔽的检查结果。
然后来自图6的屏蔽电路2222的经屏蔽的检查结果“0000”和来自优先权检查块21的优先权检查结果“0110”被分别提供给最终选择单元223作为8位的数据(0000_0110)中高位的4位和低位的4位。
然后,最终选择单元223编码该数据并确定来自处理器P1的请求应被接受。
<A-3.效果>
如至此所描述的,本发明第一优选实施例的仲裁电路组合了优先权仲裁和循环法仲裁。这样,在优先将总线访问权利给予提出高优先权总线访问请求的处理器的同时,仲裁电路在循环法顺序的基础上产生屏蔽数据以使至少关于有最高优先权的处理器的数据不被屏蔽,然后该屏蔽数据被用于屏蔽从优先权值检查得到的数据。一些有最高优先权的处理器通过循环法仲裁而屏蔽,该仲裁以较小的电路规模来提供确保公平总线访问的仲裁。
<B.第二优选实施例>
第一优选实施例已描述了图1的仲裁电路的配置和操作以及确保公平总线访问的效果。本发明的第二优选实施例描述可确保更公平的总线访问的配置。
<B-1.设备的配置>
在图2或图3中,处理器P0到P3的每个都包括其自己的优先权产生电路16,其中在优先权产生电路16中产生的优先权值与总线访问请求一起被输出为优先权信息。现在,图8示出优先权产生电路16A的配置;除了优先权产生电路16的功能以外,优先权产生电路16A进一步被提供了当总线访问请求未被接受时提高优先权值等级的功能。
如图8中所示,优先权产生电路16A包括优先权设置寄存器161、选择器162和优先权输出寄存器163。优先权设置寄存器161在预定软件的基础上产生对应于处理器优先权水平的优先权值。选择器162获得由优先权设置寄存器161产生的优先权值和稍后描述的新优先权值并选择其一。优先权输出寄存器163一次保持(once hold)由选择器162选择的优先权值并依照给定时序对外输出该优先权值。尽管图2中所示的优先权产生电路16由该优先权设置寄存器161和优先权输出寄存器163组成,优先权产生电路16A被进一步提供了以下所示的部件。
也就是说,优先权产生电路16A进一步包括优先权提高电路(priority up circuit)165和限制屏蔽电路164。当有被提供为输出的优先权值的处理器的请求未被接受时,优先权提高电路165获得该信息并从当前优先权值减去给定值例如一,从而设置新的优先权值,而限制屏蔽电路164限制由优先权提高电路165设置的优先权值。
新优先权值通过限制屏蔽电路164发送给选择器162,而选择器162选择新的优先权值并将其给予优先权输出寄存器163。当来自处理器的请求被接受并且新的、下一个请求被发出时,来自优先权设置寄存器161的值被选择并给予优先权输出寄存器163。
用于设置优先权值变化的量的优先权改变量设置寄存器167被附着于优先权提高电路165。优先权改变量设置寄存器167设置从当前优先权值被减去的值。尽管在以上描述中该值被假定为“1”,该值可被变化为另一个值,例如2或3。当优先权改变量设置寄存器167被设置为“0”时,则优先权不被提高,并且优先权产生电路16A以与第一优选实施例的优先权产生电路16相同的方式工作。
在这里至此已假定较小的优先权值表示较高的优先权水平。然而,当较大的优先权值表示较高的优先权水平时,优先权提高电路165将给定值加给当前优先权值,并且优先权改变量设置寄存器167将该值设置为要被加给的值。
此外,界限设置寄存器166被连接于限制屏蔽电路164;限制屏蔽电路164处的界限值由界限设置寄存器166来设置。例如,每次来自另一个处理器的总线访问请求被接受时,优先权提高电路165从优先权输出寄存器163的值减少一。然而,当该值变为由界限设置寄存器166设置的界限值以下的值时,则至选择器162的值被变化为界限值。
在图2的处理器中,CPU 11设置界限设置寄存器166以限定该处理器可以取的最高优先权水平。
例如,假定优先权设置寄存器已设置初始优先权值为5,并且界限设置寄存器166设置最小界限值为2。然后,尽管在开始优先权值是5,但每次总线访问请求被拒绝时,优先权值被减小为4、3。然而,由于最小界限值是2,优先权值不被减小到2以下,即优先权不再被提高。
例如,当用于处理器P0的最小界限值被设置为0而用于其它处理器的最小界限值被设置为2时,则来自处理器P0的总线访问请求优先于其它处理器,这是因为来自其余处理器的优先权值仅可达到2。
<B-2.设备的操作>
图9是示出通过图1所示的仲裁电路1进行的整个仲裁操作的时序图,所述操作包括如以上所述逐步增加优先权水平的操作。
图9基本上与图7相同,并且数据的相同状况和名称在此不再描述。还有,仲裁的特定内容与在第一优选实施例中描述的那些相同,因此各种检查结果不再被示出。
在图9的周期T1中,仅处理器P0和P2正在提出总线访问请求并且循环法顺序是0、1、2、3。来自处理器P0的优先权值是2(Priority(0)=2)并且来自处理器P2的优先权值是5(Priority(2)=5)。
在此情况下,通过仲裁电路1进行的仲裁确定处理器P0应被接受。
在周期T2中,处理器P0、P2和P3正在提出总线访问请求并且循环法顺序是1、2、3、0。来自处理器P0的优先权值是4(Priority(0)=4)并且来自处理器P3的优先权值是4(Priority(3)=4),而来自总线访问请求上次被拒绝的处理器P2的优先权值已被提高到4(Priority(2)=4)。
在此情况下,通过仲裁电路1进行的仲裁确定处理器P2应被接受。
在周期T3中,处理器P0、P1和P3正在提出总线访问请求并且循环法顺序是3、0、1、2。来自处理器P1的优先权值是3(Priority(1)=3),而来自总线访问请求上次被拒绝的处理器P0和P3的优先权值已被提高到3(Priority(0)=3且Priority(3)=3)。
在此情况下,通过仲裁电路1进行的仲裁确定处理器P3应被接受。
在周期T4中,仅处理器P0和P1正在提出总线访问请求并且循环法顺序是0、1、2、3。来自总线访问请求上次被拒绝的处理器P0和P1的优先权值已被提高到2(Priority(0)=2且Priority(1)=2)。
在此情况下,通过仲裁电路1进行的仲裁确定处理器P0应被接受。
<B-3.效果>
如至此所描述的,被包括在处理器P0到P3中的优先权产生电路16A具有当总线访问请求已被拒绝时逐步提高优先权值的水平的功能。被拒绝的处理器的优先权由此被提高,因此来自有较低优先权水平的处理器的请求将不维持不被接受。这使能了更公平的仲裁并确保了更公平的总线访问。
<B-4.修改>
第二优选实施例已被示出了以下配置:在其中处理器P0到P3中的优先权产生电路16A具有当总线访问未被接受时逐步提高优先权值的水平的功能。用于变化优先权值的配置可如以下第一到第三修改中所示被构建。
<B-4-1.第一修改>
图10示出优先权产生电路16B的配置。图10的优先权产生电路包括:多个优先权设置寄存器161B;选择器162B,用于选择从多个优先权设置寄存器161B输出的优先权值之一;以及优先权输出寄存器163,用于一次保持由选择器162B选择的优先权值并依照给定时序对外输出该值。
不同的优先权值被设置于各个优先权设置寄存器161B中以处理处理器工作频率的变化。
也就是说,通过改变被施加给处理器的时钟信号的频率可改变限定处理器工作频率的用于CPU的工作频率。例如,通过将基准时钟乘以2、3、4或通过将基准时钟除以2、3、4可逐步改变它。
这样,对应于各种工作频率的优先权值事先被分别设置于多个优先权设置寄存器161B中。当处理器的工作频率已被改变时,选择器162B在被施加给该处理器的时钟信号的频率的基础上执行选择操作,由此提供对应的优先权值。这样,可依照工作频率输出正确的优先权值。
例如,当处理器的工作频率被设置为低时,处理器缓慢地工作。当不需要处理器的高速处理时,这样的设置是例如为了减小功耗而进行的。在此情况下,来自所述处理器的总线访问请求的优先权水平不必很高,因此优先权值可被设置为大。
另一方面,当处理器的工作频率被设置为高时,理想的是将高优先权水平指定给来自该处理器的总线访问请求。因此,较小的优先权值是理想的。
应用优先权产生电路16B提供了与处理器工作频率一致的较适当的优先权值。
也就是说,当高优先权被指定给工作速度被设置为低的处理器时,则在那个处理器和以高速工作的其它处理器之间产生了无意义的争用,并且从需要高速工作的处理器进行的总线访问可被阻止。以上所示的配置解决了该问题。
<B-4-2.第二修改>
图11示出优先权产生电路16C的配置。图11的优先权产生电路16C被配置以使可依照处理器的工作频率值来增加/减小优先权值。
也就是说,优先权产生电路16C包括:优先权设置寄存器161,用于在预定软件的基础上产生对应于处理器优先权水平的优先权值;加/减电路1621,用于将给定值加给从优先权设置寄存器161输出的优先权值或从该优先权值减去以提供优先权输出值;以及优先权输出寄存器1626,用于一次保持来自加/减电路1621的优先权输出值并依照给定时序对外输出该值。
被加/被减值产生电路1622被附着于加/减电路1621;被加/被减值产生电路1622依照被施加给处理器的时钟信号的频率来设置待加给优先权值或从优先权值减去的值。加/减电路1621将从优先权设置寄存器161输出的优先权值增加/减小由被加/被减值产生电路1622设置的被加/被减值。
例如,当处理器的工作频率被设置得比预定缺省值快时,加/减电路1621对从优先权设置寄存器161输出的优先权值减量以提高优先权。另一方面,当处理器的工作频率被设置得比预定缺省值慢时,则加/减电路1621对从优先权设置寄存器161输出的优先权值增量以降低优先权。随着处理器工作频率进一步偏离缺省值,被加/被减值产生电路1622可提供更大的增加/减小。
被加/被减量设置寄存器1620被附着于被加/被减值产生电路1622;被加/被减量设置寄存器1620事先保持优先权值被增加/减小的量。
此外,限制屏蔽电路1623被插入加/减电路1621和优先权输出寄存器1626之间。当来自加/减电路1621的优先权输出值被增加到限制屏蔽电路1623处的界限值即由界限设置寄存器1624设置的界限值以上或被减小到该界限值以下(在此情况下为最小和最大界限值)时,则优先权输出值被改变为最小或最大界限值。
例如,假定通过将基准时钟乘以2、3、4来增加时钟频率或通过将基准时钟除以2、3、4来减小时钟频率。在此情况下,当缺省值对应于基准时钟,并且优先权设置寄存器161设置4,被加/被减量设置寄存器1620设置2,并且界限设置寄存器1620设置最小界限值0和最大界限值15,则优先权产生电路16C如表4中所示提供优先权输出值。
表4
频率设置 |
优先权值变化 |
输出优先权值 |
乘以4 |
优先权设置寄存器值-8 |
0 |
乘以3 |
优先权设置寄存器值-4 |
0 |
乘以2 |
优先权设置寄存器值-2 |
2 |
基准(缺省) |
优先权设置寄存器值 |
4 |
除以2 |
优先权设置寄存器值+2 |
6 |
除以3 |
优先权设置寄存器值+4 |
8 |
在表4中,当时钟频率被设置为基准时钟的两倍、三倍和四倍时,则2、4和8分别从当时钟频率等于基准值(即4)时优先权设置寄存器161设置的值被减去。然而,即使当时钟频率是基准时钟的四倍时,优先权输出值亦为0,这是因为最小界限值是0。
当时钟频率被设置为基准时钟除以2、3、4时,则2、4和8分别被加给当时钟频率等于基准值(即4)时优先权设置寄存器161设置的值。当基准时钟被除以4时,优先权输出值是12,这是因为最大界限值是15。
随着处理器工作频率被进一步偏离缺省值,被加/被减值产生电路1622提供更大的增加/减小。
如以上所示,优先权值与处理器工作频率的变化一致地动态变化,因此可获得与处理器工作频率一致的较适合的优先权值。
<B-4-4.第三修改>
图12示出优先权产生电路16D的配置。图12的优先权产生电路16D包括:多个优先权设置寄存器161B;选择器162C,用于选择从多个优先权设置寄存器161B输出的优先权值之一;以及优先权输出寄存器163,用于一次保持由选择器162C选择的优先权值并依照给定时序对外输出该值。
所述多个优先权设置寄存器161B保持不同的优先权值以处理CPU11(图2)的不同状况。
待处理的CPU 11的状况包括:CPU 11已检测到分支指令并且正提出从分支目的地取指令的请求的状况;CPU的指令队列空闲的状况;以及CPU 11的存储缓冲器已满且待存储的接下来的数据正在等待的状况。
当CPU 11正向分支目的地提出取指令请求时,来自目的地的指令即来自图1的目标TG的指令应被尽可能快地获得,在此情况下需要较高的优先权。当指令队列空闲时,CPU 11正等待来自目标TG的接下来的指令,在此情况下也需要较高的优先权。当存储缓冲器已满且待存储的接下来的数据正在等待时,流水线处理不能继续进行,直到存储处理被完成,因此需要较高的优先权。
因此,考虑CPU 11的上述状况,优先权值被事先与各个状况一致地设置于多个优先权设置寄存器161B中。选择器162C被连接于CPU 11以使它可获得关于CPU 11的状况的信息。这样,当CPU的状况已改变时,则选择器162C在CPU 11的新状况的基础上执行选择操作以使对应于新状况的优先权值被输出。由此可依照CPU 11的状况将较适合的优先权值提供为输出。
采用优先权产生电路16D提供了与CPU 11的状况一致的较适合的优先权值。
除了以上所示的三个状况,待处理的CPU 11的状况另外包括CPU11读取立即被使用的数据的状况。在此情况下,亦需要较高的优先权,并且对应于该状况的优先权值亦被设置于优先权设置寄存器161B中。
尽管以上描述已示出了依照CPU 11的状况选择较适合的优先权值的配置,亦可依照处理器中的高速缓冲存储器的状况来设置优先权值。
例如,数据高速缓冲存储器14(图3)可处于被称为“直写”的状况。直写状况是这样一种操作:当CPU 11在高速缓冲存储器14中写数据时,在高速缓冲存储器14中被重写的内容总是亦被写到主存储器(未示出)中以保持数据匹配。该操作包括两个步骤;CPU 11将数据写到高速缓冲存储器14中然后高速缓冲存储器14将数据写到主存储器中。
在直写中,当总线未被占用时,高速缓冲存储器14可将数据写到主存储器(即图1的目标TG)中,在此情况下不需要将优先权设置为很高。然而,当它未能完整地写数据时,即当直写操作失败时,则该数据必须被再次写入。因此,当在写回过程中再次写数据时需要高优先权。对应于该状况的优先权值亦被设置于优先权设置寄存器161B中以使所述数据可被优先地再次写入。
以上描述假定仲裁电路1执行仲裁操作。然而,上述优先权产生电路16A到16D可被应用以确保亦对具有仅执行循环法控制的常规仲裁电路的数据处理系统的公平总线访问。亦有可能通过组合优先权产生电路16A到16D来配置优先权产生电路。
尽管已详细描述了本发明,以上描述在各方面是说明性的而非局限性的。应理解可在本发明的范围内设计诸多其它修改和变化。