用于多处理器系统的加权处理器选择设备和方法

文档序号:6411199阅读:263来源:国知局
专利名称:用于多处理器系统的加权处理器选择设备和方法
技术领域
本发明总体上涉及多处理器系统,更具体而言,涉及一种用于多处理器系统的加权处理器选择设备和方法。
相关技术说明多处理器系统内部的早期固件执行(例如启动或引导过程)特别有问题。在多处理器系统内部的固件执行的早期阶段期间(例如,像在系统复位之后),在启动或引导过程期间执行的许多功能不是多处理器安全的。具体来讲,在固件执行的早期阶段期间,未充分地发挥出系统存储器和高速缓存的作用,由此存储器相干性机制是不可操作的,而且无法维护存储器相干性。其结果是,多处理器系统内部的早期固件执行可能会导致两个或多个处理器同时尝试访问一个资源。例如,两个或多个处理器可以同时尝试对寄存器进行写,这会导致存储资源中的不正确数据或过时数据的存储。
将与多处理器系统内部的固件执行的早期阶段相关联的难度减到最低的一种常见手段就是,选择单个处理器来起到自引导处理器(bootstrap processor,BSP)的作用。众所周知,单个BSP的选择使BSP能执行为充分操作(例如,操作系统的执行)而准备多处理器系统的功能,这包括建立存储器相干性模式,与此同时多处理器系统内部的其它处理器保持空闲状态。照此,单个处理器(例如,BSP)的选择使多处理器系统能仅仅使用单个处理器向前推进通过尚未确立存储器相干性的早期固件阶段,并且消除把过时数据写入到可能会由多处理器系统内部的处理器共享的资源中的可能性。
在一些例如就像Intel公司的基于IA-32的系统这样的多处理器系统内,BSP的选择是自动地利用前端总线(FSB)协议来执行的。利用FSB协议,多处理器系统内的每个处理器都包括连接或搭接到系统总线上的多个信号输入端或管脚,以便根据FSB上处理器的物理位置来为每个处理器建立唯一的二进制码或标识符。当系统复位时,每个处理器就对其管脚进行采样,并且读取且内部地存储其唯一标识符。
利用FSB协议,当系统复位时,就把具有特定的预定标识符的处理器之一指定为BSP。典型地,指定的BSP经由处理器间中断(IPI)来产生系统管理中断。具体来讲,BSP利用其它处理器的唯一标识符来指挥位于这些处理器上的IPI,以便使它们强行设为已知的空闲状态。如果其它处理器处于空闲状态,那么BSP具有对引导过程的完全控制,直到已经充分地发挥了系统存储器和高速缓存的作用以使多处理器能安全工作为止。
一些微处理器体系结构,例如就像Intel ItaniumTM系列处理器所采用的体系结构,并未利用诸如上述FSB协议之类的硬件技术提供BSP的自动选择。反而,不为BSP的选择而提供基于硬件的机制的处理器却通常依靠多处理器安全固件来选择BSP。
在操作系统执行期间,多处理器系统通常采用诸如(例如)cmpxchg之类的原子(即,不可中断的)读/比较/写指令来创建基于存储器的信号量,所述信号量实现了从多处理器系统内部的多个处理器中选择单个处理器。令人遗憾的是,虽然在后来的固件执行阶段期间可以采用这类基于固件的处理器选择技术,但是当相干的存储器是不可用之时,在早期的固件执行阶段期间就不能使用那些技术。
在易于选择多处理器系统内部的单个处理器(例如,BSP)的另一种手段当中,同系统一起使用的芯片组包含当第一次读取时返回一个特定值而对于所有后续的读取返回一个不同值的专用寄存器。照此,读取该专用寄存器的第一处理器将根据从寄存器中检索出的值来认定它是BSP,而随后读取寄存器并检索出不同值的其余的处理器认定它们要保持空闲状态。虽然这个专用寄存器提供了一种用于从多个处理器中选择单个处理器的机制,但是这种选择是任意的,由此不考虑多处理器系统内部的可用处理器的状况良好(health)或工作条件。
附图简要说明

图1是使用这里所述的处理器选择技术的多处理器系统示例的框图;图2a-c是描绘这样一种方式的示例的流程图,采用所述方式,可以在图1中所示的多处理器系统内使用这里所述的处理器选择技术;和图3是描绘这样一种方式的流程图,采用所述方式,可以对图1中所示的处理器进行编程以产生它们的加权值。
详细说明图1是使用这里所述的示例性处理器选择技术的多处理器系统10的示例的框图。如图1所示,多处理器系统10包括经由互连总线或网络18而彼此相耦合的多个处理器12、14和16。处理器12-16可以是任何适合的处理器、处理单元或微处理器,例如就像Intel ItaniumTM处理器、Intel X-ScaleTM处理器、Intel PentiumTM处理器、等等。
处理器12-16还耦合于芯片组20,所述芯片组包括存储器控制器22、输入/输出(I/O)控制器24和共享资源26。众所周知,芯片组典型地提供I/O和存储管理功能以及多个通用和/或专用寄存器、定时器等等,它们可由耦合于该芯片组的一个或多个处理器访问或使用。存储器控制器22执行使处理器12-16能访问系统存储器28的功能,所述系统存储器可以包括任何期望类型的易失性存储器,例如就像静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)等等。I/O控制器24执行使处理器12-16能经由I/O总线30而与外围设备(未示出)相通信的功能。虽然在图1中把存储器控制器22和I/O控制器24描绘成了芯片组20内的独立功能块,但是可以在单个半导体电路内集成由这些块所执行的功能或者可以利用两个或多个独立的集成电路来实现由这些块所执行的功能。
在图1中所示的示例中,共享资源26是可由所有处理器12-16访问的芯片组20内的寄存器。尽管在图1中把共享资源26描绘成是独立于存储器控制器22和I/O控制器24的,但是共享资源26也可以是存储器控制器22或I/O控制器24内部的寄存器。供共享资源26使用的寄存器是可读且可写的寄存器,在系统10复位之后,所述寄存器具有已知缺省值,例如零值。
在处理器12-16是Intel TitaniumTM处理器的情况下,可以将Intel 870芯片组用作为芯片组20。正如这里更详细描述的那样,Intel870芯片组提供了多个暂存寄存器,其中任何一个暂存寄存器都能够执行共享资源26的功能。然而,应当认识到的是,虽然诸如由870芯片组提供的那些寄存器之类的暂存寄存器都非常适合于用作为共享资源26,但是也可以代替使用任何其它具有可容许的副作用(side-effect)的寄存器。换言之,可以同下面结合图2a-2c所描述的技术一起使用的、对系统10的操作没有不利影响的任何寄存器,都是适合的备选方案。由此,如果处理器12-16对那个寄存器的访问(即,从那个寄存器中读取,和/或向那个寄存器写入)不会致使不良的后果或副作用,则可以把任何寄存器都用作为共享资源26。例如,可以把与固定的外设部件互连(PCI)装置相关联的基址寄存器用作为共享资源26,当执行这里所述的处理器选择技术的同时,所述外设部件互连装置不为系统10所使用。
正如同样在图1中描绘的那样,处理器12-16包括各自的以已知频率进行计数的时间间隔定时器/计数器(ITC)寄存器38-42。例如,在处理器12-16是Intel ItaniumTM处理器的情况下,ITC寄存器38-42是能被复位且继而从零开始以每秒10亿次计数速率连续向上计数的64位的寄存器。由于Intel itanium处理器内的ITC寄存器的大尺寸(即,计数器位数),这些ITC寄存器能够在不翻转(rollover)的情况下连续计数达580年以上。
另外,所述系统10包括存储用于执行这里所述的处理器选择技术的计算机代码(例如,软件或固件)的非易失性存储器32。如图1所示,所述非易失性存储器32可以耦合于芯片组20,由此可以由处理器12-16经由芯片组20来加以访问。附加地,或者备选地,非易失性存储器32可以位于芯片组20内部,和/或可以经由I/O总线30而耦合于处理器12-16。在分配非易失性存储器32(例如,存储器32的一部分32经由I/O总线30而耦合于如图1所示的芯片组20,而该存储器的另一个部分也耦合于该芯片组20)的情况下,可以在存储器32的这些不同部分之间分配用于执行这里所述的处理器选择技术的计算机代码。
在下面图2a-2c中所示的示例性处理器选择技术是一种基于软件或固件的技术,该技术使诸如图1中所示的系统10之类的多处理器系统能根据与处理器相关联的加权值的比较从多个处理器(例如,处理器12-16)中选择一个处理器(例如,处理器14),或者如果期望的话则能从中选择一组处理器(例如,处理器12和和14)。更具体而言,每个加权值都对应于其中一个处理器12-16,并且每个加权值都可表示相对应的那个处理器的属性或者多个属性。例如,所述加权值可以表示多处理器系统内的处理器的相对的状况良好、条件或性能。具体来讲,可以利用一个或多个处理器执行速度、处理器壳体温度、内嵌的自测试结果、处理器抽象层(PAL)移交的状态、局部快闪存储器状态等等来产生每个处理器12-16的加权值。另外,加权值还可以并入与处理器12-16的状况良好、条件或性能无关的信息,例如像数值标识符,每个数值标识符都唯一地与其中一个处理器12-16相关联。
图2a-c中所示的处理器选择技术不要求使用多处理器安全资源,因此特别适用于选择单个处理器(例如,处理器12)以便在早期的固件(即,在相干存储器和高速缓存都可用之前)执行期间执行非多处理器安全的功能。例如,可以有利地在多处理器系统内,特别是在采用未给BSP选择提供基于硬件的机制且由此依赖软件或固件来执行BSP的选择的处理器的多处理器系统中,应用图2a-c中所示的处理器选择技术,以便选择自引导处理器(BSP)。
当然,图2a-c中所示的处理器选择技术还可以用于选择单个处理器以便在后来的固件执行阶段(例如,像在操作系统执行期间)期间执行非多处理器安全的功能。例如,要求访问互补型金属氧化物半导体(CMOS)随机存取存储器(RAM)的处理器操作不是多处理器安全的。因此,图2a-c中所示的处理器选择技术能用来从多个处理器中选择单个处理器以执行要求访问CMOS RAM的操作。然而,实际上,典型地利用原子指令或基于存储器的信号量来确保在一个给定的时间多处理器系统内只有一个处理器访问CMOS RAM。
图2a-c中所示的处理器选择技术包括三个明显不同的阶段或例程。在图2a中所示的第一阶段或例程期间,通过在各自的等待循环中收集和捕获(trapping)处理器12-16(块58-62),然后在基本上相同的时间从处理器12-16各自的等待循环中释放处理器12-16,来基本上使多处理器系统10内的多个处理器12-16的操作同步。因为多处理器系统内的处理器通常以稍微不同的速率执行指令,多处理器系统内的每个处理器开始执行图2a-c中所示的选择技术的时间是可以变化的。因此,为了确保多处理器系统10内的所有12-16处理器在它们的等待循环内都被捕获且由此基本上在正被释放之前得以同步,第一阶段或例程延迟处理器12-16中的第一个,以便其等待循环中开始执行第一阶段或例程(图2a),至少直到多处理器系统10内的所有其余的处理器都已经开始执行第一阶段或例程(图2a)并且进入了它们各自的等待循环(块58-62)为止。
在图2b中所示的第二阶段和例程期间,示例性处理器选择技术(图2a-c)给多处理器系统10内的所有处理器12-16提供了一个时机,来把它们各自的加权值与存储在共享资源26中的值进行比较,并且如果它们的加权值优于当前存储在共享资源26中的值,则把它们的加权值写入到共享资源26。为了确保具有最佳加权值的处理器已于第二阶段或例程结束(图2b)时、在共享资源26中存储了它的加权值,所有处理器12-16都以基本上同步的方式(即,大约同时地)为多处理器系统10中的每个处理器执行一次第二阶段或例程。换言之,因为在多处理器系统10中存在三个处理器,所以三个处理器12-16以基本上同时的方式执行三次第二阶段或例程(图2b)。其结果是,即使共享资源26并非多处理器安全的,最终也把最佳加权值写入到共享资源26。例如,如果处理器12-16具有三个不同的加权值,并且第一次执行第二例程,每个处理器12-16可以同时判定它们的加权值优于当前存储在共享资源26中的值,因此所有处理器12-16都将通过尝试把它们的加权值写入到共享资源26中来竞争共享资源26。当然,因为共享资源26并非多处理器安全的(即,不是作为相干存储器来维护的),所以最终写入到共享资源26中的值可能是与处理器12-16中任何一个相关联的加权值,并且最终写入到共享资源26中的值未必就是尝试对共享资源26进行写的处理器12-16中的最佳加权值。如果写入共享资源26中的值是第三个最佳值(即,最坏的值),那么在下次或第二次执行第二阶段或例程(图2b)期间,处理器12-16中只有两个将尝试把它们的加权值写入到共享资源26中,因为处理器12-16中只有两个将判定它们的加权值优于当前存储在共享资源26中的值。从上文中容易领会到的是,如果每当执行第二阶段或例程时,具有最坏加权值的处理器都在处理器12-16当中赢得了对共享资源26的竞争,那么将为具有N个处理器的多处理器系统执行至少N次的第二例程,以确保具有最佳加权值的处理器最终能把它的加权值写入到共享资源中。
在图2c中所示的第三阶段或例程期间,处理器选择技术使多处理器系统10内的每一个处理器12-16都能判断是否已经为执行诸如像执行BSP活动之类的特定任务而选择了它。具体来讲,在第二阶段或例程的最后一次迭代结束时,每个处理器12-16都将它的加权值同存储在共享资源26中的最佳加权值进行比较(图2b)。如果处理器判定它的加权值等于存储在共享资源26中的值,那么那个处理器就认为是已经从处理器12-16中被选出的。
多处理器系统内的每个处理器基本上以同步(即,近似同时)的方式来执行上述处理器选择技术。在下面结合图2a-2c更详细描述的示例中,所述技术是利用非易失性存储器32内存储的固件来实现的。另外,应当认识到的是,尽管把图1中所示的多处理器系统10描绘成具有三个处理器,但是如果期望的话,则下面结合图2a-2c所描述的技术也可以同具有两个处理器或三个以上的处理器的多处理器系统一起使用。
图2a-2c描绘了这样一种方式的示例,采用该方式,图1中所示的多处理器系统10能够被配置成能在初期的固件执行期间选择其中一个处理器12-16来起BSP的作用,或者执行非多处理器安全的其它功能。图2a描绘了通过在各个等待循环中收集和捕获处理器12-16然后基本上同时地从它们的等待循环中释放该处理器12-16来基本使多处理器系统10内的处理器12-16同步的第一阶段例程的示例。更具体而言,随着每个处理器12-16开始执行第一阶段或例程,它们利用它们各个的ITC寄存器38-42来建立定时器(块56)以便测量这样一个时间,所述时间大于或等于最坏情况下处理器12-16中第一个开始执行第一阶段或例程的第一时间与处理器12-16中最后一个开始执行第一阶段或例程的稍后第二时间之间的时间差。具体来讲,因为处理器12-16可以以不同的速率执行指令,所以处理器12-16将在不同的时间建立它们的定时器。例如,在使用图2a-c中所示的处理器选择技术来为系统10选择BSP的情况下,处理器12-16可以开始执行第二阶段或例程,由此在系统10复位后的不同时间建立它们的定时器(块56)。
正如下面结合块58-64更详细论述的那样,在每个处理器12-16内建立定时器,以便当定时器首次到期的处理器执行块64所表示的活动时,使所有处理器12-16都能于基本上同时在被释放之前、在它们各自的等待循环(块58-62)中被收集或捕获,所述定时器等于第一处理器开始执行第一阶段或例程的时间与最后一个的处理器开始执行第一阶段或例程的时间之间的最坏情况的延迟。
在处理器12-16是Intel ItaniumTM处理器的情况下,处理器12-16优选地利用其中所提供的ITC寄存器来建立它们的定时器。具体来讲,处理器12-16可以通过读取ITC寄存器的当前值(块56)然后稍后根据ITC寄存器的已知时钟同步速率判断ITC寄存器对应于未来时间的未来计数值来建立它们的定时器,所述未来时间是最坏情况的时间延迟。当然,其中处理器12-16建立它们的定时器的特定方式将会变化,以适合系统10所使用的特定硬件平台或处理器类型。
在建立每个处理器12-16的定时器之后,每个处理器12-16都对共享资源26进行读(块58),并且返回由一个数字字来表示的值,所述数字字所具有的位的数目等于用以表示与处理器12-16相关联的加权值的最大位数。然后,每个处理器12-16判断共享资源26所返回的值是否等于缺省值(块60)。如上所述,优选地,共享资源26是芯片组20内的寄存器等,该寄存器例如具有像系统10复位后的零值之类的已知缺省值。然后,每个处理器12-16判断(在块56设定的)它的定时器是否已经到期(块62)。在处理器12-16是Intel itaniumTM处理器的情况下,当到达了所计算的未来计数值时,发生定时器到期。当然,取决于多处理器系统10内使用的特定硬件平台(例如,处理器类型),定时器满期可能会以不同的方式发生。在任何情况下,如果处理器12-16中的任何一个处理器判定它的定时器已经到期,那么它就把最坏情况的加权值(该值不等于缺省值)写入到共享资源26(块64)中,然后将它的循环计数器初始化为零(块66),以供由图2b中描绘的第二阶段或例程使用。否则,具有未到期定时器的处理器再次对共享资源26进行读,并且判断共享资源26所返回的值是否等于缺省值(块58和60)。如果存储在共享资源26中的值不等于缺省值,那么所有具有未到期定时器的处理器就都退出它们的等待循环并且初始化它们各自的循环计数器(块66)。虽然这里所述的示例性实施例将最坏情况加权值写入到共享资源(块64)中,但是在块64,处理器也可以替代地把它自己的加权值写入到共享资源中,以便执行这里所述的系统和方法而且能得到相同或相似的结果。
因此,在执行图2a中所示的第一阶段或例程期间,如果与处理器12-16中的任何一个相关联的定时器到期,则那个处理器就把存储在共享资源26中的值从缺省值改变为最坏情况的加权值,借此从这些处理器各自的等待循环中释放所有具有未到期定时器的处理器(即块58-62)。照此,图2a-c中所示的处理器选择技术的第一阶段或例程使所有处理器12-16都能基本上被同步,以便近乎同时地开始执行图2b中所示的第二阶段或例程。
然而,应当认识到的是,处理器12-16通常在图1中所示的第一阶段或例程结束时未被极佳地同步。具体地说,与首次建立其定时器的处理器相关联的定时器将首次到期,借此使那个处理器能先于其它处理器继续执行第二阶段或例程。另外,具有未到期定时器的处理器将典型地必须执行几条附加指令以判定共享资源26中的值已被定时器首次到期的处理器改变。
图2b描绘了能够由图2a-c的处理器选择技术使用以使具有最佳加权值的处理器能在共享资源26中存储那个加权值的第二阶段或例程的示例。在图2a中所示的第一阶段或例程的执行之后,处理器12-16开始以基本上同步的方式来执行第二阶段或例程(即,所有处理器12-16近乎同时地开始执行第二阶段或例程)。如图2b所示,每个处理器12-16都建立定时器以便测量预定的时间周期,所述时间周期大于或等于处理器12-16中的任何一个(即最慢慢的处理器)执行与图2b中所示的第二阶段或例程相关联的计算机代码或固件所要求的最长的(即,最坏情况的)时间周期。
然后,处理器12-16对共享资源26进行读(块70),并且将它们的加权值同存储在共享资源26中的值进行比较(块72)。图1中所示的示例中的每个处理器12-16所使用的加权值都是用代表处理器的状况良好或工作状况的数值连接成的、关联于处理器的唯一数值标识符。
图3描绘了这样一种方式,采用该方式,可以对处理器12-16进行编程以产生它们各自的加权值。利用图3中所示的示例性技术,每个处理器12-16都产生唯一的数值标识符(块100)。每个处理器12-16的唯一标识符都是从处理器12-16内的各个通用寄存器或任何其它类似的存储装置或存储器中取出的。例如,在处理器12-16是IntelItaniumTM处理器的情况下,每个处理器12-16内的处理器抽象层(PAL)为其各自的处理器提供唯一标识符。例如,处理器12-16可以具有各自的唯一数值标识符1、2和3。
处理器12-16根据处理器的一个或多个属性-诸如像处理器执行速度、处理器壳体温度或任何其它期望的参数或属性或参数与属性的组合来产生它们各自的状况良好值(块102)。例如,在一个更大的数值对应于最佳相对状况良好的情况下,处理器的相对状况良好可以从1-9这个范围变化。
然后,每个处理器12-16都将它的唯一标识符与它的状况良好值连接起来(块104),以形成那个处理器的加权值。因此,在唯一标识符从1到3这个范围变化、而可能的状况良好从1到9这个范围变化的情况下,处理器12-16的可能加权值就从11到93到变化,在其中加权值的10位置代表处理器的相对状况良好,而1位置表示唯一处理器标识符。然后,每个处理器12-16在寄存器等等内本地存储它的加权值(块106)。
再次参照图2b,如果处理器的加权值(例如,与其唯一标识符相连接的其状况良好值)优于(例如,数值上大于)当前存储在共享资源26中的值,那么该处理器就尝试对共享资源26进行写(块74)。对于图2b中所示的例程的第一次迭代而言,存储在共享资源26的值等于预先由第一例程或阶段存储的最坏情况的加权值(块64),所述最坏情况的加权值在上面的示例中是″11″。当然,最坏情况的值将依可能的状况良好值的范围以及唯一标识符而变。
因为处理器12-16基本上同时地执行图2b中所示的第二例程或阶段,一个固有的竞争条件存在于如下的处理器当中,这些处理器确定它们比当前存储在共享资源内的值具有更好的加权值但是尚未把它们的值写入到共享资源中。其结果是,一个或多个处理器12-16可以尝试以大致相同时间将它们的加权值写入到共享资源26中,不过最终只有其中一个处理器12-16将会成功地完成这一操作。然而,正如下面更详细描述的那样,图2b中所示的第二阶段或例程的每一次连续迭代都减少了参与竞争条件的处理器的数目,以使得确保该具有最佳加权值的处理器最终能够将其值写入到共享资源26。如图2b所示,判定它们的加权值不优于当前存储在共享资源26中的值的处理器不会尝试对共享资源26进行写。
在尝试将它们的加权值写入到共享资源26或者判定不应该做这类尝试之后,处理器12-16判断它们的定时器是否已经到期(块76)。如果处理器判定它的定时器尚未到期,则它就继续检查它的定时器(块76),并由此在一个循环中等待。因为处理器12-16已经都用相同的值建立或设置它们的定时器(块68)来测量如下这样的一个时间,所述时间大于或等于处理器12-16中最慢的一个处理器执行由块70、72和74代表的活动所要求的时间,所以所有处理器12-16最终都将在同时处于它们各自的等待循环中(块76)。换言之,最快的处理器将只是要比其它处理器更加长久地保持在其等待循环中。然而,所有处理器定时器都将基本上同时地到期,而且因为当定时器到期时所有处理器都处于它们的等待循环中(块76),所以所有处理器都将基本上同时地继续递增它们的循环计数器(块78)。
处理器12-16在递增它们的循环计数器后,就判断它们的循环计数器是否小于或等于处理器的数目,这一数目在图1中所示的示例中是3。如果循环计数器小于或等于3,则处理器12-16就重建它们的定时器(块68),并且重复与块68-80相关联的活动。在另一方面,如果循环计数器大于3(即,等于4),处理器12-16执行与图2c中所示的第三阶段或例程相关联的活动。正如能够从上文中认识到的是,第二阶段或例程内的等待循环(块76)确保处理器12-16以基本上同步的方式来执行与块68-80相关联的活动。此外,应当认识到的是,处理器12-16可能难以交换与系统10内当前活动的(或存在的)处理器的数目有关的信息,在处理器间通信受限或无法通信时的早期的固件阶段期间更是如此。因此,如果不能确实地知道将在多处理器系统内使用多少处理器的话,就可以将循环计数器设置成对等于特定硬件平台支持来执行这里所述的处理器选择技术的最大处理器数目的迭代次数进行计数。
图2c描绘了能用于使具有最佳加权值的处理器能把它自身视作为所选处理器的第三阶段或例程的示例。如图2c所示,每个处理器12-16对共享资源26进行读(块82),并且判断存储在共享资源26中的值是否等于它的加权值(块84)。如果处理器(例如,处理器16)判定它的加权值等于存储在共享资源26中的值,则那个处理器(例如,处理器16)就认定它已经被选定执行诸如系统10的引导过程之类的活动。在另一方面,如果处理器(例如,处理器16)判定它的加权值不等于存储在共享资源26中的值,则那个处理器(例如,处理器16)就认定它尚未被选定(块88),并且例如可以进入空闲状态。
虽然结合图2a-2c示出并描述的示例性处理器选择技术导致选择单一处理器,但是还能修改所述技术以从多个处理器中选择一组处理器。举例来说,贯穿图2a-2c中所示的示例使用的唯一标识符的消除,就使得能选择一组具有相同状况良好值的处理器。具体来讲,如果图1中所示的处理器12-16具有各个状况良好值7、7和2,那么这类选择技术就会导致选择处理器12和14,因为它们具有相同的最高状况良好值。
尽管依照这里已经描述的本发明的教导实现了确定的方法和设备,但是本专利的覆盖范围不限于此。相反,本专利涵盖了字面上或根据等效原则而明确落入所附权利要求的范围内的本发明的教导的所有实施例。
权利要求
1.一种从多处理器系统内的多个处理器中选择处理器的方法,包括将加权值与多个处理器中的每一个相关联;比较加权值;以及根据加权值的比较,从多个处理器中选择至少其中一个处理器。
2.如权利要求1所述的方法,其中将加权值与多个处理器相关联包括利用可表示与每个加权值相关联的处理器的相对状况良好的参数来产生加权值。
3.如权利要求2所述的方法,其中产生加权值包括使用与处理器相关联的唯一标识符以致每个加权值都不同于其它的加权值,并且每个加权值都唯一地只与多个处理器中的其中一个相关联。
4.如权利要求1所述的方法,进一步包括在比较加权值之前先基本上使多个处理器的操作同步。
5.如权利要求4所述的方法,其中在比较加权值之前先基本上使处理器的操作同步包括读取多处理器系统内的共享资源以判断与多个处理器相关联的多个定时器中的任何一个是否已经到期。
6.如权利要求5所述的方法,其中读取共享资源以判断多个定时器中的任何一个是否已经到期包括读取非多处理器安全的寄存器,以及建立每个定时器以测量这样一个时间,所述时间大于或等于多个处理器中的第一个建立多个定时器中的一个的第一时间与多个处理器中的最后一个建立多个定时器中的另一个的稍后的第二时间之间的时间差。
7.如权利要求1所述的方法,其中比较加权值包括读取多处理器系统内的共享资源,以及判断存储在共享资源中的值是否优于加权值。
8.如权利要求7所述的方法,其中判断存储在共享资源中的值是否优于加权值包括判断存储在共享资源中的值在数值上是否大于加权值。
9.如权利要求7所述的方法,进一步包括如果至少其中一个加权值优于存储在共享资源中的值,则对共享资源进行写。
10.如权利要求7所述的方法,其中由多个处理器中的每一个重复对共享资源进行读取以及判断存储在共享资源中的值是否优于加权值多次,所述次数等于多个处理器中的处理器的数目。
11.如权利要求10所述的方法,进一步包括设置与多个处理器相关联的定时器,以测量大于或等于与多个处理器相关联的最坏情况的执行时间的时间。
12.如权利要求11所述的方法,进一步包括利用定时器和等待循环来保持多个处理器在重复地对共享资源进行读取以及判断加权值是否优于存储在共享资源中的值上基本上同步。
13.如权利要求1所述的方法,其中根据加权值的比较从多个处理器中选择至少其中一个处理器包括选择具有最佳加权值的处理器。
14.如权利要求13所述的方法,其中选择具有最佳加权值的处理器包括选择具有数值最大的加权值的处理器。
15.如权利要求1所述的方法,其中根据加权值的比较从多个处理器中选择至少其中一个处理器包括选择其加权值存储在共享资源中的处理器。
16.一种多处理器系统,包括互连网络;耦合于该互连网络的共享资源;和耦合于该互连网络的多个处理器,其中所述处理器被编程以将加权值与多个处理器中的每一个相关联,比较加权值并且根据加权值的比较从多个处理器中选择至少其中一个处理器。
17.如权利要求16所述的方法,其中所述处理器被编程以利用可表示与每个加权值相关联的处理器的相对状况良好的参数来产生每个加权值。
18.如权利要求17所述的系统,其中所述处理器被编程以利用与处理器相关联的唯一标识符来产生加权值,以使得每个加权值都不同于其它的加权值,并且每个加权值都唯一地只与多个处理器中的其中一个相关联。
19.如权利要求16所述的系统,其中所述处理器被编程以在比较加权值之前先基本上使彼此同步。
20.如权利要求16所述的系统,其中所述处理器被编程以通过读取多处理器系统内的共享资源来比较加权值,并判断存储在共享资源中的值是否优于加权值。
21.如权利要求16所述的系统,其中所述处理器被编程以根据加权值的比较、通过选择具有最佳加权值的处理器来从多个处理器中选择至少其中一个处理器。
22.一种处理器选择系统,包括计算机可读介质;和存储在计算机可读介质上的计算机代码,其适合于被处理器执行以便将加权值与处理器相关联;将该处理器的加权值和与其它处理器相关联的其它加权值进行比较;以及如果该处理器的加权值优于其它加权值,则选择该处理器。
23.如权利要求22所述的系统,其中所述计算机代码适合于被处理器执行以便如果该处理器的加权值在数值上大于其它加权值则选择该处理器。
24.如权利要求22所述的系统,其中所述计算机代码适合于被处理器执行以便利用可表示处理器的相对状况良好的参数来产生与处理器相关联的加权值。
25.如权利要求24所述的系统,其中所述计算机代码适合于被处理器执行以便利用与处理器相关联的唯一标识符来产生加权值。
26.一种用于多处理器系统的、从多个处理器中选择处理器的方法,包括基本上使多个处理器同步;比较与多个处理器相关联的加权值;以及识别多个处理器中具有最佳加权值的一个。
27.如权利要求26所述的方法,其中识别多个处理器中具有最佳加权值的一个包括识别具有数值最大的加权值的处理器。
28.如权利要求26所述的方法,包括将多个处理器中所识别的一个指定为多处理器系统的自引导处理器。
29.如权利要求26所述的方法,其中比较与多个处理器相关联的加权值包括重复地读取存储在共享资源中的值,并且如果至少其中一个加权值在数值上大于存储在共享资源中的值,则在共享资源中存储这个加权值。
30.一种多处理器系统,包括经由互连网络而彼此耦合的多个处理器,其中所述处理器被编程以使基本上使彼此同步;比较与多个处理器相关联的加权值;以及识别多个处理器中具有最佳加权值的一个。
31.如权利要求30所述的多处理器系统,其中所述处理器被编程以通过识别多个处理器中具有数值最大的加权值的一个来识别多个处理器中具有最佳加权值的一个。
32.如权利要求30所述的多处理器系统,其中所述处理器被编程以将多个处理器中所识别的一个选择为多处理器系统的自引导处理器。
33.一种用于多处理器系统的处理器,包括计算机可读介质;和存储在计算机可读介质上的计算机代码,其适合于被处理器执行以使该处理器基本上与另一个处理器同步,将与该处理器相关联的第一加权值和与另一个处理器相关联的第二加权值进行比较,并且如果第一加权值优于第二加权值则选该择处理器。
34.如权利要求33所述的处理器,其中第一加权值和第二加权值都与每个处理器各自的状况良好相关联。
35.一种引导具有多个处理器的系统的方法,包括在结束系统的引导过程之前,先基本上使处理器的操作同步;以及根据处理器的相对性能特性,将多个处理器中的一个选择为自引导处理器。
36.如权利要求35所述的方法,其中根据处理器的相对性能特性将多个处理器中的一个选择为自引导处理器包括选择多个处理器中具有最佳加权值的一个。
37.如权利要求36所述的方法,其中选择多个处理器中具有最佳加权值的一个包括选择多个处理器中具有数值最大的值的一个。
38.如权利要求35所述的方法,其中根据处理器的相对性能特性将多个处理器中的一个选择为自引导处理器包括根据至少其中一个处理器指令执行速度、处理器壳体温度和处理器抽象层信息,将多个处理器中的一个选择为自引导处理器。
39.如权利要求35所述的方法,其中根据处理器的相对性能特性将多个处理器中的一个选择为自引导处理器包括读取非多处理器安全的共享资源中存储的加权值。
40.一种选择自引导处理器的方法,包括将状况良好值分配给处理器组内的每个处理器;以及通过重复对共享资源进行读和写来比较引导操作期间的状况良好值。
41.如权利要求41所述的方法,其中通过重复对共享资源进行读和写来比较引导操作期间的状况良好值包括将最佳状况良好值写入到共享资源中。
42.如权利要求41所述的方法,其中将最佳状况良好值写入到共享资源中包括将数值最大的值写入到共享资源中。
42.如权利要求41所述的方法,其中所述共享资源不是多处理器安全的。
43.一种选择自引导处理器的方法,包括在复位操作之后,基本上使多个处理器同步;使处理器多次竞争共享资源;以及读取共享资源中的数据以便选择自引导处理器。
44.如权利要求43所述的方法,其中所述共享资源不是多处理器安全的。
45.如权利要求43所述的方法,其中读取共享资源中的数据以便选择自引导处理器包括读取共享资源中的加权值。
全文摘要
一种多处理器系统(10),包括互连网络(18)、耦合于该互连网络的共享资源(26)以及彼此耦合且经由该互连网络而耦合于共享资源的多个处理器(12、14、16)。对处理器进行编程以将加权值与多个处理器中的每一个相关联,比较加权值,并且根据加权值的比较,从多个处理器中选择至少其中一个处理器。
文档编号G06F15/177GK1659516SQ03813629
公开日2005年8月24日 申请日期2003年6月13日 优先权日2002年6月13日
发明者T·谢林 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1