使用不同速率处理器的多处理器系统 本发明涉及一种多处理器系统,尤其涉及这样一种多处理器系统,它使用多个最大运算速率不同的处理器。
许多现代计算机系统为对称多处理器系统。在对称多处理器系统中,每一处理器被用于执行某个特定的任务。例如,每一处理器可能被用于执行同一进程的不同指令集或完全不同的进程,或者,每一处理器被设计出来用于高效地专门处理某些特定的任务。所以,可以想象的到,在计算机系统中使用一个以上的处理器通常会提高系统的性能。
有些计算机制造商提供采用可替换处理器的对称式多处理器计算机系统。处理器通常以可拔插子卡的形式通过连接器与计算机系统的主板相连。这样,当某个处理器出现故障或需要更新时可以很容易地换成新的处理器。然而,该处理器必须与其它处理器的运行速率相同以符合该对称式多处理器系统结构。
众所周知,处理器的运行速率提高非常快。像如今标准速率的处理器很可能在一年后就过时了。今后,随着时代发展,要找到一个与原来运算速率一样的处理器将会更加困难。所以,也许有一天会因为某个出现故障的处理器而要换掉系统中所有处理器以确保系统仍能正常工作。因为一个处理器出现故障而换掉所有处理器代价是相当昂贵的。
所以,在技术上很有必要寻求一种支持在计算机系统中使用不同速率的多处理器的装置以及方法。
本发明在技术上致力于满足这方面地需要。本发明提供了一种允许在多处理器系统中使用不同速率的处理器的装置。在本发明的一个实施例中,该装置包括一个可编程阵列逻辑(PAL)或现场可编程门阵列(FPGA)来用于检测每一个处理器的最大速率并且选择一个适合于所有处理器的共同速率作为所有处理器的运算速率。
在本发明的另一个实施例中,该装置调整系统时钟来匹配处理器的速率。
图1为本发明的一个最佳实施例中采用的计算机系统100的框图。
图2为本发明采用的处理器以及电路结构的框图。
图3(a)描述了提供处理器运算速率的两个逻辑图之一。
图3(b)描述了提供处理器运算速率的两个逻辑图之二。
图1为本发明的一个最佳实施例中采用的计算机系统100的框图。该计算机可采用IBM公司推出的RS/6000系统的工作站形式,尽管如此,本发明并不打算局限于此而是使它在本质上同样适合于其它任何计算机系统。
仍就图1而言,计算机系统100包括一组中央处理器(CPU)110和120通过系统总线150上的主桥(hast bridge)130与系统存储器140相连。主桥与带有若干PCI设备162~168的外围部件互连(PCI)总线160相连。PCI设备可以包括以下设备:图形适配器、通信适配器、网络适配器、光盘、软磁盘以及硬盘驱动器等等。CPU 110和120分别地通过连接器170和180与计算机系统100相连。
图2为本发明采用的处理器以及电路结构的框图。电路中包括一个通过连接器170和180与处理器110和120相连的可编程阵列逻辑(PAL)220。连接器170和180有许多管脚。PAL 220还与多路转换器240相连。多路转换器有两路输入:由振荡器250和260产生的66兆赫和60兆赫的信号。多路转换240的输出则与时钟发生器230相连。而时钟发生器具有多路输出270,其中之一连到处理器110和120上。
根据本发明的最佳实施例,每个连接器的多个管脚其中有四个,即存在检测管脚0至3(PD[0..3]),用于检测每个110和120处理器的存在和速率。这四个管脚定义的值如下表所示:
表1 PD[0..3] CPU最大频率 0000 66MHz 0001 100MHz 0010 120MHz 0011 133MHz 0100 150MHz 0101 166MHz 0110 180MHz 0111 200Mhz 1111 尚未推出
这四个管脚的值将通过信号线205和215提供给PAL 220。通常如果两个处理器的最大速率相同则每一个连接器170和180的管脚的值将是一致的。如果值不一致则说明110和120处理器的最大速率不同。PAL 220便选择两者之中最低的作为处理器的运行速率。PAL 220还通过从信号线235传给多路转换器240一个信号来选择适当的系统时钟频率。一旦该频率被送入时钟发生器230则时钟发生器230输出适当的系统时钟,然后该系统时钟就从信号线280提供给各处理器110和120。PAL 220所选择的每一处理器的速率与基于该系统所支持的最大总线频率的一个系数有关。以下两张表将阐明某个特定的系统将如何设定这个基于系统最大频率的系数。
表 2 系统总线最大频率(MHz)CPU速率 N_PD[0. 50 60或66 66(MHz)66 .3]0000 1∶1 1∶1* 1∶1 100 0001 2∶1 1.5∶1* 1.5∶1 120 0010 2∶1 2∶1** 1.5∶2 133 0011 2.5∶1 2∶1* 2∶1 150 0100 3∶1 2.5∶1** 2∶1 166 0101 3∶1 2.5∶1* 2.5∶1 180 0110 3.5∶1 3∶1** 2.5∶1 200 0111 4∶1 3∶1* 3∶1*=表示使用66Hz;**=表示使用60Hz
表3 N_PD[0..3] PLL_config[0..3] 0000 0000 0001 1100 0010 0100 0011 0100 0100 0110 0101 0110 0110 1000 0111 1000
该系数或比值用于使处理器通过系统总线时钟以PAL 220所选择的速率运行。例如,假设处理器110最大速率为133兆赫而处理器120最大速率为166兆赫,当该计算机系统启动或复位时,处理器110将向PAL 220送出信号0011,处理器120则送出信号0101。PAL 220则选择133兆赫作为两个处理器的运算频率。所以PAL 220将产生一个0011信号作为新的存在检测位(即N_PD[0..3])。通过查询表3可知PAL 220将输出锁相环路设置信号(PLL_config[0..3])0100到处理器来为每一个处理器设置锁相环路(PLL)。而锁相环路将用于构造频率系数。此处引用的美国专利4,689,581号公开了PLL电路的一种实现。
如表2所示,如果系统总线频率为50兆赫则PLL_config信号通知每个处理器的PLL将时钟信号乘以2.5,若总线频率为66兆赫则将时钟频率乘以2。在本实施例中,系统总线频率可以为60兆赫和66兆赫,PAL 220将选择振荡器250(频率为66兆赫),因为处理器用66兆赫频率比60兆赫更容易获得接近133兆赫的运算速率。
PAL 220使用如下算法来产生新的存在检测位(N_PD[0..3]):win0(0)=1,win1(0)=1;N_PD(0)=PD0(0)&PD1(0);for(i=1;i<4;i++){/*计算出新的存在检测位要使用的项*/win0(i)=win0(i-1)&[N_PD(i-1)|(win0(i-1)&!PD0(i-1))];win1(i)=win1(i-1)&[N_PD(i-1)|(win1(i-1)&!PD1(i-1))];/*计算新的存在检测位*/N_PD(i)=(!win0(i)| PD0(i))&(!win1(i)| PD1(i));};PD0[0..3]为第一个处理器的存在检测位,PD1[0..3]为第二个处理器的存在检测位。win0(i)项与第一处理器相关,win1(i)项与第二处理器相关。
在上例中,PD0[0..3]=0011,PD1[0..3]=0101,以及N_PD(0)=0&0=0,所以有如下计算:
当i=1时
win0(1)=1&[0|(1&1)]=1;
win1(1)=1&[0|(1&1)]=1;
N_PD(1)=(0|0)&(0|1)=0;
当i=2时
win0(2)=1&[0|(1&1)]=1;
win1(2)=1&[0|(1&0)]=0;
N_PD(2)=(0|1)&(1|0)=1;
当i=3时
win0(3)=1&[1|(1&0)]=1;
win1(3)=0&[1|(0&1)]=0;
N_PD(3)=(0|1)&(1|1)=1;
所以有N_PD[0..3]=0011。
图3(a)和图3(b)描述了PAL 220完成上述算法中当i>0时的逻辑框图。从算法中可以看到,使用了两套图3(a)所示的逻辑框图,每一处理器使用一套。
简言之,在检测一个多处理器系统的各个处理器的运算速率后,本发明选择出适合所有处理器的速率(通常为最低的处理器速率)作为所有处理器共同的运算速率。本发明还调整系统时钟以匹配处理器的运算速率。而且,本发明驱动各个处理器的锁相环路(PLL)设置线(configuration Lines)来给处理器提供正确的系数,以使处理器利用这个系数与系统时钟协调一致地按本发明所选择的运算速率运行。
所以,对称多处理器系统中一个处理器出故障后,可以用一个不同运算速率的处理器来替换而不必换掉其它所有处理器。而且,本发明允许通过一次更换一个处理器来逐步对一个多处理器系统进行更新。
尽管已参照一个特定的实施例对本发明进行了详尽的描述,而对于普通技术人员来说其它实施例也将是显而易见的。例如,在不脱离本发明的范围的情况下PAL 220可以用一个现场可编程门阵列(FPGA)来代替。另外,处理器也不必在子卡上,它可以通过其管脚连到母板上。所以,本发明并不限于以上所述,所要求权利在权利要求书中说明。