CN1906586A - 用于在多处理器系统中处置处理错误的方法和设备 - Google Patents

用于在多处理器系统中处置处理错误的方法和设备 Download PDF

Info

Publication number
CN1906586A
CN1906586A CNA2005800017410A CN200580001741A CN1906586A CN 1906586 A CN1906586 A CN 1906586A CN A2005800017410 A CNA2005800017410 A CN A2005800017410A CN 200580001741 A CN200580001741 A CN 200580001741A CN 1906586 A CN1906586 A CN 1906586A
Authority
CN
China
Prior art keywords
processing unit
sub
communication
unit
processor
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
Application number
CNA2005800017410A
Other languages
English (en)
Other versions
CN1906586B (zh
Inventor
大川保吉
平冈大辅
平入孝二
小山达也
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Interactive Entertainment Inc
Original Assignee
Sony Computer Entertainment Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Computer Entertainment Inc filed Critical Sony Computer Entertainment Inc
Publication of CN1906586A publication Critical patent/CN1906586A/zh
Application granted granted Critical
Publication of CN1906586B publication Critical patent/CN1906586B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2023Failover techniques
    • G06F11/203Failover techniques using migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2043Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant where the redundant components share a common memory address space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/202Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant
    • G06F11/2035Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where processing functionality is redundant without idle spare hardware

Abstract

提供了一种方法和设备用于:监测处理器任务和被分配而将由与主处理单元关联的各个子处理单元执行的其关联的处理器负荷;检测是否在给定的一个子处理单元中已经发生了处理错误;根据给定子处理单元的处理器任务的处理器负荷以及参予子处理单元的处理器负荷,将给定子处理单元的所有处理器任务重新分配给包括与主处理单元关联的其他子处理单元的一个或多个参予子处理单元;和至少下面之一:(i)关机,和(ii)重新引导给定子处理单元。

Description

用于在多处理器系统中处置处理错误的方法和设备
技术领域
本发明涉及用于在多处理系统中处置处理器错误的方法和设备,特别是,用于当发生处理器错误时在多处理系统的多个子处理单元之间重新分配处理器任务的方法和设备。
背景技术
实时、多媒体应用正在变得越来越重要。这些应用需要诸如每秒若干千兆比特数据的非常快的处理速度。虽然多个单处理单元能够具有很快的处理速度,但是它们通常还不能与多处理器架构的处理速度匹配。实际上,在多处理器系统中,多个子处理器可以并行(或者至少一致地)操作以实现所期望的处理结果。
可以使用多处理技术的计算机和计算设备的类型非常广泛。在个人计算机(PC)和服务器之外,这些计算设备包括蜂窝电话、移动计算机、个人数字助理(PDA)、顶置盒、数字电视机以及许多其他的设备。
在设计多处理系统时要考虑当一个子处理单元显示处理错误时如何进行管理。确实,处理错误可以影响多处理系统的总体性能并且可以不利地影响用户的实时、多媒体体验。当一个子处理器的结果由其他子处理单元使用以实现所期望的结果时更是如此。
可以将诸如纠错码(ECC)错误、奇偶错误、处理器暂停(hang-up)等的硬处理器错误定性为致命错误或者可恢复错误。可能由于操作系统错误、内核错误等导致致命错误的发生,而可恢复错误通常不涉及操作系统错误或者内核错误。当发生可恢复错误时,最好能够继续执行处理器任务而不影响任何实时处理期限或处理需求,诸如当恢复可能需要必须重新引导给定子处理器并且从开始重新执行处理器任务的情况。在提出本发明之前,这还是不可能的。
因此,在现有技术中需要用于实现减少硬处理器错误的不利影响的有效多处理的新方法和设备。
发明内容
根据本发明的一个或多个方面,一种方法包括:监测处理器任务和其关联的处理器负荷,所述处理器负荷被分配而将由与主处理单元关联的各个子处理单元执行;检测是否在给定的一个子处理单元中已经发生了处理错误;以及根据给定子处理单元的处理器任务的处理器负荷以及参予子处理单元的处理器负荷,将给定子处理单元的所有处理器任务重新分配给包括与主处理单元关联的其他子处理单元的一个或多个参予的子处理单元。所述方法还可以包括下面操作至少之一:(i)关闭;和(ii)重新引导给定子处理单元。
所述方法还可以包括:在子处理单元之间分配处理器任务,从而至少一个子处理单元基本上被卸载并且可以用于从给定子处理单元接收一些或者全部处理器任务。而且,所述方法可以包括命令没有被调度来执行任何处理器任务的一个或多个卸载的子处理单元进入备用状态(其可以是低功耗状态)。
根据本发明的其他实施方式,参予子处理单元可以包括一组或多个对应组的子处理单元,每个组与对应的主处理单元关联。子处理单元的各个组的每一个和关联的主处理单元可以是多处理单元的集合的一部分,其中子处理单元的对应组和主处理单元与子处理单元的一个或多个其他的对应组和关联的主处理单元共享公共数据总线。
可替代地,或者此外,子处理单元的每个对应组和关联的主处理单元可以是独立的多处理单元,其中子处理单元的对应组和主处理单元不与子处理单元的任何其他组和关联的主处理单元共享公共数据总线。而且,子处理单元的每个对应的组和关联的主处理单元至少可以是分布的多处理单元的一部分,其中将至少某些主处理单元和子处理单元彼此远离放置。
可以将多处理单元、独立多处理单元、和分布多处理单元按照下面情况的至少一种进行放置:(i)在共同或者不同的电路板上;(ii)在共同或者不同的产品中;和(iii)在共同或者不同的位置处。
从这个方面来说,所述方法可以包括:确定在给定子处理单元和将与该子处理单元共享处理结果的一个或多个子处理单元之间所需要的、包括通讯带宽和通讯延迟的通讯要求。之后,所述方法可以包括进一步根据所述通讯要求进行给定子处理单元的任务的重新分配。
所述方法还可以包括:确定可能在将与给定子处理单元共享处理结果的一个或多个子处理单元和可以被重新分配有处理器任务的一个或多个参予子处理单元之间可能存在的、包括通讯带宽和通讯延迟的通讯成本。因此,可以进一步根据所述通讯要求和所述通讯成本的比较来进行给定子处理单元的任务的重新分配。
最好,所述通讯要求和所述通讯成本至少包括下面之一:(i)在共同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(ii)在不同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(iii)在共同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(iv)在不同产品中两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(v)在共同位置处的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;和(iv)在每个都处于不同位置处的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟。
根据本发明的另外的实施方式,多处理单元和独立多处理单元中的至少一个可以与管理实体进行通讯。所述管理实体最好包括表,该表至少包含下面之一:(i)指示参予子处理单元的处理器负荷的性能信息;(ii)指示参予子处理单元被放置在多处理单元和独立多处理单元之中的位置的位置信息;和(iii)指示在可以被重新分配有处理器任务的一个参予子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟的通讯信息。
就这个方面来说,所述方法最好包括:使用所述表来确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。所述方法最好还包括:响应于在参予子处理单元之间的处理器负荷、位置、通讯带宽、或通讯延迟之中的任何变化来更新所述表。
根据本发明的另外的实施方式,所述方法可以包括:从与给定子处理单元关联的主处理单元将询问发送到管理实体,该询问至少包括下面之一:(i)给定子处理单元的处理器任务的处理器负荷;(ii)给定子处理单元的位置;和(iii)给定子处理单元的通讯要求。
此外,所述方法还可以包括:将给定子处理单元的处理器任务的处理器负荷、位置、和通讯要求之中的至少一个与所述表的性能信息、位置信息、和通讯信息进行匹配,以确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。
根据本发明的一个或多个其他方面,可以将本发明的方法和设备用于获得因为使用参予子处理单元而支付的租赁费用。为此,多处理单元、独立多处理单元、分布多处理单元中的至少之一可以与管理实体进行通讯,所述管理实体包括表,该表至少包含下面之一:(i)指示可以被租赁使用的参予子处理单元的处理能力、和指示这种参予子处理单元的处理器负荷的性能信息中至少一个的可用性信息;(ii)使用可以被租赁的参予子处理单元的对应费用的费用信息;(iii)指示可以被租赁的参予子处理单元被放置在多处理单元、独立多处理单元和分布多处理单元之中的位置的位置信息;和(iv)指示在可以被重新分配有处理器任务的、用于租赁的一个参予子处理单元和将与给定处理单元共享处理结果的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟的通讯信息。
可以响应于用于租赁的参予子处理单元之间的可用性信息、费用信息、位置信息、或通讯信息之中的任何变化来更新所述表。最好,使用所述表来确定应该将给定子处理单元的处理器任务重新分配给哪个用于租赁的参予子处理单元。
可以从与给定子处理单元关联的主处理单元发送询问到管理实体,所述询问至少包括下面之一:(i)给定子处理单元的处理器负荷;(ii)给定子处理单元的位置;(iii)指示从一个或多个用于租赁的参予子处理单元租赁处理能力的可接受费用的租赁信息;和(iv)通讯要求。
最好,将询问的处理器负荷、可接受费用、位置、和通讯要求中的至少一个与所述表的可用性信息、费用信息、位置信息、和通讯信息中的至少一个进行匹配,以确定应该将给定子处理单元的处理器任务重新分配给哪个用于租赁的参予子处理单元。当被重新分配有给定子处理单元的处理器任务时,所述用于租赁的参予子处理单元最好与可以收集对其使用的费用的一个或多个实体关联。
可替换地,可以将询问的处理器负荷、可接受费用、位置、和通讯要求与所述表的可用性信息、费用信息、位置信息、和通讯信息进行匹配,从而可以将给定子处理单元的处理器任务重新分配给用于租赁的、具有最低费用的一个或多个参予子处理单元。当被重新分配有给定子处理单元的处理器任务时,所述用于租赁的参予子处理单元可以与可以收集对其使用的费用的一个或多个实体关联。
根据本发明的一个或多个其他方面,可以在没有管理实体的情况下实现处理器到处理器的通讯和传送。为此,可以从与给定子处理单元关联的主处理单元发布要求响应的一个或多个请求到一个或多个参予子处理单元;可以在要求响应的一个或多个请求中积累通讯信息,所述通讯信息指示当对应的要求响应的请求从主处理单元传播到一个或多个参予子处理单元时,与所述对应的要求响应的请求所遇到的任何通讯接口关联的通讯延迟和通讯带宽中的至少一个;可以至少计算在将与给定子处理单元共享处理结果的一个或多个子处理单元和根据所积累的通讯信息可以被重新分配有处理器任务的一个或多个参予子处理单元之间可能存在的通讯成本的估计。
最好,要求响应的一个或多个请求是能够通过通讯网络传输的网络数据分组的形式。所述通讯网络至少可以是因特网和与其进行通讯的任何其他网络之一。
最好在主处理单元处从一个或多个参予子处理单元接收一个或多个响应;并且最好将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
一个或多个响应也最好是能够通过通讯网络传输的网络数据分组的形式。
最好计算从给定子处理单元到响应了要求响应的请求的一个或多个参予子处理单元的上行链路数据路径的通讯成本。最好,这种计算至少包括下面之一:(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;和(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽。
最好根据对于每个上行链路数据路径的合计上行链路通讯延迟和最低通讯带宽中的至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
而且最好在一个或多个响应中积累进一步的通讯信息,所述进一步的通讯信息指示当对应的响应从一个或多个参予子处理单元传播到主处理单元时与所述响应所遇到的任何通讯接口关联的通讯延迟和通讯带宽之中至少一个;并且最好根据所积累的通讯信息和所积累的进一步通讯信息来计算通讯成本。
每个响应可以既包括积累的通讯信息又包括对应的积累的进一步通讯信息,从而所述积累的通讯信息和所述积累的进一步的通讯信息对于发布一个或多个要求响应的请求的主处理单元是可用的。
还可以计算给定子处理单元和响应了要求响应的请求的一个或多个参予子处理单元之间的上行链路数据路径和下行链路数据路径的通讯成本。最好,这种计算至少包括下面之一:(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽;(iii)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个下行链路数据路径的合计下行链路通讯延迟;和(iv)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个下行链路数据路径的最低的通讯带宽。
然后可以根据对于每个上行链路数据路径的合计上行链路通讯延迟、对于每个下行链路数据路径的合计下行链路通讯延迟、对于每个上行链路数据路径的最低通讯带宽、和对于每个下行链路数据路径的最低通讯带宽之中至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
可以从主处理单元将要求响应的一个或多个请求发布给要与给定子处理单元共享处理结果的一个或多个子处理单元。最好积累指示在对应的要求响应的请求从主处理单元传播到将与给定子处理单元共享处理结果的一个或多个子处理单元时,与所述请求所遇到的任何通讯接口关联的通讯延迟和通讯带宽之中至少一个的进一步的通讯信息。然后根据所积累的通讯信息和所积累的进一步通讯信息之间的任何差异来计算通讯成本。
最好计算在给定子处理单元和响应了要求响应的请求的一个或多个参予子处理单元之间、以及在给定子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间的上行链路数据路径和下行链路数据路径的通讯成本。最好,这种计算至少包括下面之一:(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元、和/或到将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元、和/或到将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽;(iii)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元、和/或从将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个下行链路数据路径的合计下行链路通讯延迟;和(iv)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元、和/或从将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个下行链路数据路径的最低的通讯带宽。
然后可以根据对于每个上行链路数据路径的合计上行链路通讯延迟、对于每个下行链路数据路径的合计下行链路通讯延迟、对于每个上行链路数据路径的最低通讯带宽、和对于每个下行链路数据路径的最低通讯带宽之中至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
可以从与给定子处理单元关联的主处理单元发送预留请求到与给定子处理单元和将要被重新分配有给定子处理单元的处理器任务的一个或多个参予子处理单元之间的通讯总线关联的一个或多个总线仲裁器,其中所述预留请求使得一个或多个总线仲裁器为至少下面目的之一预留通讯带宽:(i)执行重新分配的处理器任务;和(ii)将处理器任务的结果发送到要接收这种结果的一个或多个其他子处理单元。之后,可以从与给定子处理单元关联的主处理单元发送预留清除请求到一个或多个总线仲裁器,其中该预留清除请求使得一个或多个总线仲裁器清除对通讯带宽的预留。
所述响应最好至少包括积累的信息、和指示发出响应的参予子处理单元的对应处理器负荷的性能信息之中的一个。因此,可以根据发出响应的参予子处理单元的对应处理器负荷和给定子处理单元的处理器任务的处理器负荷的比较、通讯要求、积累的信息,选择一个或多个参予子处理单元用于给定子处理单元的处理器任务的重新分配。
根据本发明的一个或多个其他方面,一种设备包括:多个子处理单元,每个都可以进行操作以执行处理器任务;和主处理单元。可以操作所述主处理单元以:(i)监测处理器任务和其关联的处理器负荷,所述处理器负荷被分配来由对应子处理单元执行;(ii)检测在给定的一个子处理单元中是否已经发生了处理错误;(iii)根据给定子处理单元的处理器任务的处理器负荷以及参予子处理单元的处理器负荷,将给定子处理单元的所有处理器任务重新分配给包括与主处理单元关联的其他子处理单元的一个或多个参予子处理单元。
还可以操作主处理单元以:(iv)进行下面操作之一,发布关闭命令到给定子处理单元和发布重新引导命令到给定子处理单元中。
可以将主处理单元远离一个或多个子处理单元放置,或者和一个或多个子处理单元放置在一处。而且,可以将一个或多个子处理单元彼此远离地进行放置。此外,子处理单元可以使用基本上异种的计算机架构或同种的计算机架构。
最好可以进一步操作主处理单元以在子处理单元之间分配处理器任务,从而至少一个子处理单元基本上被卸载并且可以用于从给定子处理单元接收某些或者全部处理器任务。此外,还可以进一步操作主处理单元以命令没有被调度来执行任何处理器任务的一个或多个卸载的子处理单元进入备用状态(其可以是低功耗状态)。
例如,子处理单元可以至少包括下面之一:(i)电源中断电路;和(ii)时钟中断电路,可以操作其每一个以响应于断电命令将给定子处理单元放置到备用状态。每个子处理单元最好包括电源和电源中断电路。最好可以操作电源中断电路以响应于断电命令而关闭电源从而将给定子处理单元放置到备用状态。
所述设备最好还包括:一个或多个对应组的子处理单元,每个组与对应的主处理单元关联。参予子处理单元可以包括一个或多个对应组的子处理单元。
子处理单元的每个对应的组和关联的主处理单元可以是多处理单元集合的一部分,其中子处理单元的对应组和主处理单元与一个或多个其他对应组的子处理单元和关联的主处理单元共享公共数据总线。此外,或者替代地,每个对应组的子处理单元和关联的主处理单元可以是独立的多处理单元,其中对应组的子处理单元和主处理单元不与任何其他组的子处理单元和关联的主处理单元共享公共数据总线。而且,每个对应组的子处理单元和关联的主处理单元至少可以是分布的多处理单元的一部分,其中将至少某些主处理单元和子处理单元彼此远离放置。
可以将多处理单元、独立多处理单元、和分布的多处理单元按照下面情况的至少一种进行放置:(i)在共同或者不同的电路板上;(ii)在共同或者不同的产品中;和(iii)在共同或者不同的位置处。
还可以进一步操作主处理单元以确定在给定子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间所需要的、包括通讯带宽和通讯延迟的通讯要求。还可以进一步操作主处理单元以根据所述通讯要求来进行给定子处理单元的任务的重新分配。
再者,可以操作主处理单元来确定在将与给定子处理单元共享处理结果的一个或多个子处理单元和可以被重新分配有处理器任务的一个或多个参予子处理单元之间可能存在的、包括通讯带宽和通讯延迟的通讯成本。还可以操作主处理单元以根据通讯成本和通讯要求的比较来进行给定子处理单元的任务的重新分配。
根据本发明的方法,所述通讯要求和通讯成本可以至少包括下面之一:(i)在共同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(ii)在不同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(iii)在共同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(iv)在不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;(v)在共同位置处的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟;和(vi)在每个都处于不同位置的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和延迟。
而且,在两个子处理单元之间的一个或多个数据通讯接口至少包括下面之一:(i)内部子处理单元输入/输出总线接口;(ii)子处理单元之间输入/输出总线接口;(iii)交换结构互连;(iv)网络接口卡;和(v)数据网络。
所述设备最好还包括与多处理单元和独立多处理单元之中至少一个进行通讯的管理实体。所述管理实体最好还包括表,该表至少包含下面之一:(i)性能信息,指示参予子处理单元的处理器负荷;(ii)位置信息,指示将参予子处理单元在多处理单元和独立多处理单元之间进行放置的位置;和(iii)通讯信息,指示在可以被重新分配有处理器任务的一个参予子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟。
最好可以操作所述管理实体以响应于在参予子处理单元之间的通讯延迟、通讯带宽、位置、或处理器任务的处理器负荷中的任何变化来更新所述表。最好还可以操作管理实体以使用所述表来确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。
最好还可以操作与给定子处理单元关联的主处理单元以发送询问给管理实体,所述询问至少包括下面之一:(i)给定子处理单元的处理器任务的处理器负荷;(ii)给定子处理单元的位置;和(iii)给定子处理单元的通讯要求。
最好还可以操作管理实体来将给定子处理单元的通讯要求、位置、和处理器任务的处理器负荷中的至少一个同所述表的通讯信息、位置信息、和性能信息中的至少一个进行匹配,以确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。
从结合附图在下面给出的描述中,本发明的其他方面、特点、和优点对于本领域的普通技术人员将变得明显。
附图说明
为了说明的目的,在当前优选的附图中示出了多种形式,但是应该理解本发明并不限于所示出的确切结构和手段。
图1示出了根据本发明的一个或多个方面的多处理系统的结构的示意图;
图2示出了根据本发明的处理器部件(PE)的优选结构的示意图;
图3示出了根据本发明的示例子处理单元(SPU)的结构的示意图;
图4示出了可以由根据本发明的一个或多个方面的多处理系统所执行的处理步骤的流程图;
图5示出了可以由根据本发明的多处理系统所执行的进一步的处理步骤的流程图;
图6示出了可以由根据本发明的多处理系统所执行的再进一步的处理步骤的流程图;
图7示出了可以由根据本发明的多处理系统所执行的再进一步的处理步骤的流程图;
图8示出了根据本发明的另外的子处理单元(SPU)的结构的示意图;
图9示出了根据本发明的一个或多个进一步方面的、包括多于一个的子处理单元的处理系统的结构图;
图10示出了根据本发明的一个或多个方面的、其中将两个多处理单元放置在共同电路板上的处理系统的结构图;
图11示出了根据本发明的一个或多个进一步方面的、其中将一个或多个多处理单元放置在不同的电路板上的处理系统的结构图;
图12示出了根据本发明的一个或多个进一步方面,将多个多处理单元放置在可以通过网络的方式进行互连的不同产品中的示意图;
图13示出了可以结合本发明的多处理单元进行使用的软件单元(cell)特点的框图;
图14示出了根据本发明的一个或多个进一步方面的、其中将一个或多个多处理单元放置在不同产品中的不同电路板上的处理系统的结构图;
图15示出了可以由根据本发明的一个或多个方面的多处理系统执行的处理步骤的流程图;
图16示出了可以由根据本发明的多处理系统执行的进一步的处理步骤的流程图;
图17示出了根据本发明的包含关于多处理系统的子处理单元的通讯信息、位置信息、和处理器负荷信息的表的示意图;
图18示出了可以由根据本发明的多处理系统所执行的进一步的处理步骤的流程图;
图19示出了除了还包括指示可以用于租赁的处理能力的信息以及指示租赁这种处理能力的费用的费用信息以外,与图17的表类似的表的示意图;
图20示出了图18的流程图的替代流程图,其示出了可以由根据本发明的多处理系统所执行的再进一步的处理步骤;
图21示出了根据本发明一个或多个另外的方面的多处理器系统的组合框图和流程图;
图22示出了根据本发明一个或多个另外的方面的多处理器系统的组合框图和流程图;
图23示出了当响应通过图22的系统传播时所获得的通讯信息的累加的框图。
具体实施方式
参照其中类似的数字标记指示类似的部件的附图,在图1中示出了根据本发明的多处理系统100。多处理系统100包括通过总线108与诸如DRAM的共享存储器106耦合的多个(可以是任何数量)处理器102。注意并不需要共享的DRAM存储器106(因此以虚线示出)。实际上,一个或多个处理单元102可以使用其自己的存储器(未示出)并且不需要共享的存储器106。
最好一个处理器102是主处理单元,例如,处理单元102A。其他处理单元102最好是子处理单元(SPU),如处理单元102B、102C、102D等。可以使用任何已知的计算机架构来实现处理单元102。不必使用相同的架构来实现所有的处理单元102;实际上,它们可以是异种或同种结构。在操作中,主处理单元102A最好通过子处理单元102B-D来调度和协调(orchestrate)数据及应用程序的处理,从而子处理单元102B-D以并行和独立的方式来处理这些数据和应用程序。
注意可以将主处理单元102A相对于子处理单元102B-D放置在本地,如在相同的芯片中、在相同的封装中、在相同的电路板上、在相同的产品中等。或者,可以将主处理单元102A远离子处理单元102B-D进行放置,如果在不同的产品中,其可以通过总线、(诸如因特网的)通讯网络等进行连接。类似地,可以将子处理单元102B-D在相同的地方或彼此远离地放置。
有时,一个或多个子处理单元102B-D例如可能发生硬处理器错误、不涉及操作系统错误或内核错误的可恢复错误。为此,最好可以操作主处理单元102A来执行其他管理功能以允许继续执行处理器任务而不必从开始重新执行(在错误之前)已经由子处理单元102B-D执行的处理器任务。最好,主处理单元102A的管理功能进行操作以确保即使在一个或多个子处理单元102B-D中发生可恢复错误的情况下也可以满足实时(和/或多媒体)处理的目的。
这些进一步的管理功能包括监视被分配而将由对应的子处理单元102B-D执行的处理器任务(和/或用于那些任务的关联的处理器负荷)。主处理单元102A还检测是否已经在给定的一个子处理单元中发生了处理错误,并且将该给定子处理单元的所有处理器任务重新分配给一个或多个参予的子处理单元。最好根据给定子处理单元的处理器任务的处理器负荷以及参予子处理单元的处理器负荷来执行这种重新分配。将在本说明书的后面更详细地讨论本发明的这些和其他方面。
在讨论关于本发明的重新分配特点的进一步细节之前,将首先提供优选计算机架构的描述。根据这种计算机架构,从共同计算模块(或单元)中构建多处理计算机系统的所有处理器。这种共同计算模块具有一致的结构并且最好使用相同的指令集架构。可以由一个或多个客户机、服务器、PC、移动计算机、游戏机、PDA、顶置盒、电器设备、数字电视机和使用计算机处理器的其他设备来构成多处理计算机系统。
如果需要,多个计算机系统还可以是网络的成员。一致的模块结构使得通过多处理计算机系统对应用程序和数据的有效、高速处理成为可能,并且在使用网络的情况下,使得通过网络的应用程序和数据的迅速传送成为可能。这种结构还简化了建造不同尺寸和处理能力的网络成员的工作以及由这些成员处理的应用程序的准备工作。
基本处理模块是处理器部件(PE)。关于这个方面,请参照图2,其示出了基本处理模块或处理器部件(PE)200的框图。如在该图中所示,PE 200包括I/O接口202、处理单元(PU)204、直接存储器存取控制器(DMAC)206、以及多个子处理单元208,即,子处理单元208A、子处理单元208B、子处理单元208C、和子处理单元208D。本地(或内部)PE总线212在PU 204、子处理单元208、DMAC 206、和存储器接口210之间传送数据和应用程序。本地PE总线212可以具有(例如)传统的架构或者可以被实现为分组交换网络。如果将本地PE总线212实现为分组交换网络,虽然需要更多的硬件,但是增加了可用的带宽。
可以使用实现数字逻辑的各种方法来构建PE 200。但是,最好将PE 200构建为在硅衬底上使用互补金属氧化物半导体(CMOS)的单个集成电路。衬底的替代材料包括砷化镓、砷化镓铝和其他使用各种掺杂物的、被称为III-B的化合物。还可以使用超导材料,例如快速单流量子(rapid single-flux-quantum,RSFQ)逻辑,来实现PE 200。
将PE 200通过高带宽存储器连接216与动态随机存取存储器(DRAM)214紧密关联。DRAM 214作为PE 200的主存储器工作。虽然DRAM 214最好是动态随机存取存储器,但是可以使用其他装置,例如静态随机存取存储器(SRAM)、磁随机存取存储器(MRAM)、光存储器、全息存储器等,来实现DRAM 214。DMAC 206和存储器接口210便利了DRAM 214和PE 200的子处理单元208和PU 204之间的数据传送。注意可以相对于子处理单元208和PU 204将DMAC 206和/或存储器接口210集成放置或独立放置。实际上,除了所示的独立结构之外,可以将DMAC 206功能和/或存储器接口210功能与一个或多个(最好是全部)子处理单元208和PU 204进行集成。因此,以虚线示出了DMAC 206。
PU 204可以是(例如)能够独立处理数据和应用程序的标准处理器。在操作中,PU 204通过子处理单元来调度和协调数据和应用程序的处理。子处理单元最好是单指令、多数据(SIMD)处理器。在PU 204的控制之下,子处理单元以并行和独立的方式来处理这些数据和应用程序。DMAC 206控制PU 204和子处理单元208对在共享的DRAM 214中所存储的数据和应用程序的存取。注意可以用一个充当调度和协调子处理单元208对数据和应用程序进行处理的主处理单元的角色的子处理单元208来实现PU 204。
根据这种模块结构,由特定计算机系统所使用的PE 200的数量可以根据该系统所需要的处理能力而定。例如,服务器可以使用四个PE 200,工作站可以使用两个PE 200而PDA可以使用一个PE 200。被分配来处理特定软件单元的PE 200的子处理单元的数量依赖于在该软件单元中的程序和数据的复杂度和数量。
图3示出了子处理单元208的优选结构和功能。子处理单元208包括本地存储器250、寄存器252、一个或多个浮点单元254以及一个或多个整数单元256。然而,也是根据所需要的处理能力,可以使用更多或更少的浮点单元254和整数单元256。在优选实施方式中,本地存储器250包含256千字节的存储量,而寄存器252的容量是128×128比特。浮点单元254最好在每秒32千兆(billion)次浮点运算(32GFLOPS)的速度上进行运算,并且整数单元最好在每秒32千兆次运算(32GOPS)的速度上进行运算。
本地存储器250可以是或不是高速缓存存储器。最好将本地存储器250构造为静态随机存取存储器(SRAM)。对于由PU 204起始的直接存储器存取PU 204可以需要高速缓存一致性(coherency)支持。但是对于由子处理单元208起始的直接存储器存取或对于从和向外部设备的存取则不需要高速缓存一致性支持。
子处理单元208还包括用于将应用程序和数据向和从子处理单元208进行传送的总线接口(I/F)258。在优选的实施方式中,将总线I/F 258耦合到DMAC 206,将其用虚线示出以指示可以将其集成地放置在所示的子处理单元208内或者可以将其放置在外部(如图2中所示)。在总线I/F 258和本地存储器250之间一对总线268A、268B与DMAC 206互连。总线268A、268B最好具有256比特的宽度。
子处理单元208还包括内部总线260、262和264。在优选实施方式中,总线260具有256比特的宽度并且提供本地存储器250和寄存器252之间的通讯。总线262和264分别提供寄存器252和浮点单元254、以及寄存器252和整数单元256之间的通讯。在优选实施方式中,从寄存器252到浮点或者整数单元的总线264和262的宽度是384比特,并且从浮点或者整数单元254、256到寄存器252的总线264和262的宽度是128比特。从寄存器252到浮点或整数单元254、256的这些总线的宽度大于从这些单元到寄存器252的总线宽度,从而在处理期间适应来自寄存器252的较大的数据流。对于每个计算需要最多三个字。但是每个计算的结果通常仅仅是一个字。
现在参照图4,其示出了可以由根据本发明的一个或多个方面的图2的多处理系统200或图1的多处理系统100执行的处理步骤的流程图。主处理单元204在步骤300接收关于由对应的参予子处理单元208所执行的处理器任务的处理负荷的信息。例如,有时可以操作每个子处理单元208以将其处理负荷和/或处理器任务报告给主处理单元204,或者主处理单元204可以发布对于这种信息的请求。在任何情况中,主处理单元204最好接收确定每个参予子处理单元208的处理器任务的处理负荷所需要的信息。
例如,参照图2,可以调度子处理单元208A以执行处理器任务A和处理器任务B,其中处理器任务A具有0.1的关联处理器负荷而处理器任务B具有0.3的关联处理器负荷。因此,子处理单元208A可以有0.6的空闲。可以调度子处理单元208B来执行分别带有关联负荷0.05、0.01、0.1和0.3的处理器任务C、处理器任务D、处理器任务E、和处理器任务F。因此,子处理单元208B可以有0.54的空闲。可以调度子处理单元208C来执行分别具有关联处理器负荷0.7和0.3的处理器任务G和处理器任务H。因此,子处理单元208C没有空闲。最后,调度子处理单元208D来执行分别具有关联处理器负荷0.15、0.05、0.7的处理器任务I、处理器任务J和处理器任务K。因此子处理单元208D可以有0.1的空闲。
最好将这些处理器任务和/或用于其的处理器负荷在软件中制表从而可以由主处理单元204在后来进行使用。
在步骤302,子处理单元208A-D中的一个(例如SPU 208A)可能发生诸如硬、可恢复错误的错误。最好由主处理单元204检测到该错误或者最好该错误被报告给主处理单元204。例如,可以通过由子处理单元208A使用软件报告给主处理单元204来实现错误的检测。替代地,可以使用任何已知的硬件中断技术来检测错误。
在步骤304,主处理单元204最好确定受影响的子处理单元(即子处理单元208A)的性能要求。最好通过存取在步骤300所获得的、关于处理器任务和/或处理器负荷的、制成表的信息来进行这种确定。(替代地,如果没有使用步骤300,可以在错误发生之后获得关于处理器任务和/或处理器负荷的信息。)在至此所讨论的说明性例子中,在子处理单元208A上的处理器负荷是:任务A+任务B=0.4。
在步骤306,主处理单元204最好确定参予子处理单元208B-D的性能能力。这可以也通过存取在步骤300所获得的、关于处理器任务和/或处理器负荷的、制成表的信息来进行。根据至此所讨论的例子,子处理单元208B的处理器能力是0.54,子处理单元208C的处理器能力是0.0,而子处理单元208D的处理器能力是0.1。
参照图5,其示出了本发明的多处理系统的进一步的处理步骤的流程图,该流程图最好进行到步骤308。在这里,确定一个或多个参予子处理单元208B-D是否具有与子处理单元208A的需求匹配的处理能力。如果该确定的结果是否定的,则流程最好进行到其中执行正常的错误处置程序的步骤310。例如,子处理单元208A可能经历重新引导过程并且可能重新执行处理任务。
但如果在步骤308的确定结果是肯定的,则流程最好进行到步骤312。在这里,主处理单元204最好将受影响的子处理单元(即子处理单元208A)的处理器任务重新分配给具有处理能力以处置来自子处理单元208A的处理器任务的一个或多个参予子处理单元208B-D。在上面所讨论的例子中,可以将来自子处理单元208A的处理器任务(总共0.4的处理器负荷)重新分配给子处理单元208B(其具有0.54的处理能力)。但是请注意如果需要(例如为了负荷均衡等原因)还可以将所述处理器任务重新分配给多于一个的参予子处理单元208B-D。
在步骤314,最好将受影响的子处理单元208A关闭或者使得其经历重新引导处理。因为最好做出努力以从受影响的子处理单元208A中清除错误,而且最好是子处理单元208A在步骤314经历重新引导处理。在重新引导之后,处理流程最好进行到其中确定是否将错误清除的步骤316(图6)。如果在步骤316的确定的结果是否定的,则处理流程最好行进到其中受影响的子处理单元208A保持在关闭状态中的步骤318。如果在步骤316的确定的结果是肯定的,则处理流程最好行进到步骤320,其中子处理单元208A的状态进行改变以指示该处理单元是能够执行处理器任务的参予子处理单元。最好将这种状态改变报告给主处理单元204,从而主处理单元204可以考虑将处理器任务分配(和/或重新分配)给子处理单元208A。
根据本发明的另外方面,最好至少一个参予子处理单元208被基本上卸载并且可以用于从经历硬、可恢复错误的另一个子处理单元208接收部分或者全部处理器任务。就这方面来说,主处理单元204最好在子处理单元208之间迁移处理器任务,从而不调度一个或多个参予子处理单元执行任何处理器任务,并且保持可用于即使在受影响的子处理单元208在发生错误的时候是满负荷的情况下也能够接受该子处理单元208的所有处理器任务的状态。
结合本发明的这些方面,现在参照示出了图6的处理流程的替代处理例程的图7。除了在步骤320(其中受影响的子处理单元208改变状态到参予子处理单元状态)之后执行附加的步骤322之外,图7的处理流程图与图6的处理流程图基本相同。具体地说,步骤322进行调用以将受影响的子处理单元(其现在可以用于执行处理器任务)放置在备用模式中,在该模式中不调度该子处理单元执行任何处理器任务并且其所有处理能力基本上都是可以使用的。这种可用性最好当在另一个子处理单元208经历错误之后需要将来自这种子处理单元208的处理器任务重新分配时进行使用。有利地,即使当错误发生时受影响的子处理单元208基本上是满负荷的,还是可以将所有的那些处理器任务重新分配给在备用模式中的子处理单元208。
关于这个方面,现在参照图8,其示出了能够被置于备用状态中的子处理单元208的结构的框图。因为这种结构包括本地存储器250、寄存器252、一个或多个浮点单元254和一个或多个整数单元256,所以其基本上与图3的子处理单元208类似。但是,子处理单元208最好还包括电源中断电路290和时钟中断电路292之中的至少一个。当使用电源中断电路290时,至SPU 208的电源可以是外部的电源294或者内部的电源296。最好可以操作电源中断电路290以响应于线路298上的命令信号而将子处理单元208置于备用状态。
具体地说,当受到命令时,电源中断电路290最好关机或者将从内部电源296到子处理单元208的电路的电源传送中断,从而将子处理单元208关机并且消耗非常少的功率或不消耗功率。替代地,如果使用外部电源294,则电源中断电路290最好响应于在线路298上的命令而中断从这种电源到子处理单元208的功率传送。
类似地,如果使用时钟中断电路292,则最好操作该电路以通过中断用于子处理单元208的系统时钟(不论该系统时钟时内部还是外部产生的)而将子处理单元208置于备用状态中。
参照图2到9,可以将多个处理器部件200进行合并或封装在一起以提供增强的处理能力。例如,如果图9中所示,可以将两个或多个处理器部件200A、200B一起封装或合并在例如一个或多个芯片封装内以形成一组多处理器单元。可以将这种结构称为宽带引擎(BE)。如图9所示,宽带引擎280包括通过总线212互连进行数据通讯的两个处理器部件200A、200B。最好提供附加的数据总线216以允许处理器部件200A、200B和共享的DRAM 214之间的通讯。一个或多个输入/输出(I/O)接口202A和202B以及外部总线(未示出)提供宽带引擎280和任何外部部件之间的通讯。宽带引擎280的每个处理器部件200A和200B以与参照图2在上面所讨论的、由子处理部件208对应用程序和数据所执行的并行和独立的处理类似的并行和独立的方式,对数据和应用程序执行处理。
根据本发明的一个或多个另外的方面,参予子处理单元可以包括一个或多个另外的多处理系统(诸如系统100(图1)、系统200(图2)、和/或系统280(图9))的一个或多个另外的子处理单元。因此,如根据上面描述对本领域的普通技术人员非常明显的是,参予子处理单元可以包括一个或多个对应组的子处理单元,其中每个组与对应的主处理单元关联。对于图1的系统100,主处理单元是处理器102A,而对应组的子处理单元包括与主处理单元102A关联的处理器102B-D。类似地,如果使用图2的系统200,则参予子处理单元可以包括与另外的主处理单元204关联的另外的子处理单元208A-D。再进一步,如果使用图9的系统280(宽带引擎),则参予子处理单元可以包括与主处理单元204A关联的附加的两组(或多组)的子处理单元208A1-D1,和与主处理单元204B关联的子处理单元208A2-D2。
关于这个方面,参予组的子处理单元(以及对应的关联主处理单元)可以是诸如图9中所示的多处理单元集合的一部分,在该多处理单元集合中各个组的子处理单元共享公共的数据总线212。替代地,或者此外,一个或多个对应组的参予子处理单元可以是诸如图1或2中所示的独立的多处理单元,其中在各个组的子处理单元之间没有这种公共数据总线。而且,一个或多个对应组的参予子处理单元至少可以是分布的多处理单元的一部分,其中将至少一些子处理单元彼此远离地进行放置。
参照图10,不论其是独立结构的一部分还是集合的一部分,都将对应的多处理单元放置在共同或者不同的电路板上、在共同或不同的产品中、和/或在共同或不同的位置处。如图10中所示,将一对宽带引擎280A和280B(其碰巧包括对应的多处理器部件集合200)放置在共同电路板400上。虽然在这个例子中示出了宽带引擎280A和280B,但是注意也可以考虑独立多处理单元(诸如使用单处理器部件200)。在任何情况中,通过宽带接口(BIF)402的方式将对应的多处理单元280A和280B互连。
参照图11,虽然将电路板400放置在单个产品404中,但是可以将多个多处理单元280A-D放置在不同的电路板400上。具体地说,将多处理单元280A和280B放置在共同电路板400A上,而将多处理单元280C和280D放置在不同的电路板400B上。但是,将两个电路板400A和400B放置在单个产品404之内。因此,能够通过可以包括电路板内部部分和电路板之间部分的宽带接口(BIF)502来执行各个多处理单元280A-D之间的数据通讯。
如上所述,可以将各个多处理单元的参予子处理单元(例如,102B-D和/或208A-D)放置在不同的产品中。因此在这些产品(和子处理单元)之间的数据通讯必须使用比单个产品内多的总线接口和/或宽带接口。关于这个方面,现在将参照图12。这里,可以在多个产品之间分配独立多处理部件208或BE 280(多处理部件的集合)以形成多处理系统500。系统500的部件或成员(被实施为计算机和/或计算设备)最好通过网络504进行通讯。网络504可以是局域网(LAN)、诸如因特网的全球网、或任何其他计算机网络。
与网络504连接的成员包括(例如)客户端计算机506、服务器计算机508、个人数字助理(PDA)510、数字电视机(DTV)512、和其他有线或无线计算机和计算设备。例如,客户端506A可以是从一个或多个PE 200或其他适当的多处理系统构建的膝上计算机。客户端506B可以是从一个或多个PE 200或其他适当的多处理系统构建的桌面计算机。而且,服务器506A可以是(使用数据库能力的)最好也从一个或多个PE 200构建的管理实体。依此类推。
因此,多处理系统500的处理能力可以依赖于被本地放置(例如一个产品)或远离放置(例如在多个产品中)的多个处理器部件200。关于这个方面,参照图13,其示出了根据本发明的一个或多个方面的总体计算机网络的框图。还可以使用PE 200和/或宽带引擎280(由多个PE组成)来实现用于计算机系统500的总体分布架构。
由于系统500的服务器508比客户端506执行更多的对数据和应用程序的处理,所以服务器508包含比客户端506更多的计算模块(例如,PE 200)。在另一方面,PDA 510在这个例子中执行少量的处理。因此,PDA 510包含最少数量的PE 200,如单个PE 200。DTV 512执行的处理量基本上在客户端506所执行的处理量和服务器508所执行的处理量之间。因此,DTV 512包含的处理器数量介于客户端506的处理器部件数量和服务器508的处理器部件数量之间。
在转到对本发明的重新分配特征进行描述之前,现在将提供关于分布多处理系统500的进一步详细情况。系统500的同种结构有利于适应性、处理速度、和处理效率。因为系统500的每个成员都使用一个或多个(或某些部分的)相同计算模块(例如处理器部件200)来进行处理,所以特定计算机或计算设备执行对数据和/或应用程序的处理并不重要,这是由于可以将对这种数据和应用程序的处理在网络的成员之间共享。通过唯一地识别包括由系统500所处理的数据和应用程序的软件单元,可以将处理结果发送到请求该处理的计算机或计算设备而不管进行这种处理的位置在哪里。因为执行这种处理的模块具有共同的结构并且使用共同的指令集架构,所以避免了添加软件层以实现处理器之间的兼容性的计算负担。这种架构和编程模型有利于提高执行(例如)实时、多媒体应用程序所必须的处理速度。
为了进一步利用由系统500提高的处理速度和效率,可以将这种系统所处理的数据和应用程序封装到唯一标识的、统一格式的软件单元502中。每个软件单元502包含、或可以包含应用程序和数据两者。每个软件单元还包含ID以在整个网络504和系统500中全局地识别该单元。这种用于软件单元的结构的统一性、和在整个网络中软件单元唯一的标识有助于在网络504的任何计算机或计算设备上对应用程序和数据的处理。例如,客户端506可以制定(formulate)软件单元502,但是因为客户端506的处理能力有限,所以其将软件单元502发送到服务器508进行处理。因此软件单元502可以根据在网络504上的处理资源的可用性而在整个网络504上迁移以进行处理。
系统500的软件单元502和处理器的同种结构还避免了当今异种网络的许多问题。例如,避免了找寻允许在使用任何指令集(例如诸如Java虚拟机的虚拟机)的任何ISA上处理应用程序的低效率的编程模块。因此系统500可以比传统网络实现效率高得多和效果好的多的宽带处理。
如上所述,可以将各个多处理单元(包括参予子处理单元)放置在共同或不同的电路板上、在共同或不同的产品中、和/或在共同或不同的位置。当将各个多处理单元放置在不同的产品中和/或在不同的位置处(如图12和13中所示),应该采用附加的通讯接口技术来互连这种多处理单元。关于这个方面,现在参照图14,其示出了被分别放置在不同的电路板400A和400B上的一对多处理单元280A和280B。将电路板400A和400B的每一个放置在通过诸如因特网的网络504互连的不同产品中。关于这个方面,电路板400A和400B的每一个最好包括输入/输出接口(IOIF)520、交换结构互连522、和网络接口卡(NIC)524,从而将各个多处理单元280连接到网络504。
提供使得参予子处理单元包括在不同电路板上和/或在不同产品和位置中的各个组的子处理单元的能力带来一个问题,因为在各个组的子处理单元之间的通讯接口的复杂性和范围越大就会越不利地影响整个分布系统中进行的处理。这也就可能不利地影响系统用户的实时、多媒体体验。因此,必须小心选择一个或多个子处理单元以接收因为参予子处理单元之中的错误而产生的重新分配的处理器任务。实际上,在不仔细进行这种选择的情况中,包括通讯带宽和通讯延迟的、与所选择的子处理单元关联的通讯成本是不可忍受的。例如,在图14的多处理单元280B和多处理单元280A之间的、并且包括IOIF 520A、交换结构互连522A、NIC 524A、因特网504、NIC 524B、交换结构互连522B、和IOIF 520B的通讯接口的复杂性可能对通讯带宽带来限制,而且可以将多处理单元280A和280B之间的通讯延迟增加到这样的程度,以至于如果将处理器任务重新分配给这种远程多处理单元则可能不能够满足吞吐量、速度等方面的处理要求。
关于这个方面,最好本发明的方法和设备考虑包括通讯带宽和通讯延迟的、在试图与给定子处理单元共享处理结果和/或(否则)试图接收给定子处理单元的处理器任务的结果的一个或多个子处理单元与可能被重新分配有处理器任务的一个或多个参予子处理单元之间所需要的通讯要求。实际上,如果没有适当地考虑通讯要求,则将处理器任务重新分配给远程子处理单元可能在处理吞吐量和速度方面产生不合需要的并且非常过分的延迟。结合上面描述,现在参照图15,其示出了可以由根据本发明的一个或多个进一步方面的多处理系统执行的处理步骤的流程图。步骤550、552、和554基本上与在上面参照图4所讨论的步骤300、302、和304类似。因此为了简明和清楚的目的,将不在此处重复这些步骤的详细情况。
在确定了受影响的子处理单元208的性能要求(步骤554)之后,例程行进到步骤556。在这里,确定在或大致在发生错误的时候与受影响的子处理单元208关联的通讯要求(例如,带宽和延迟要求)。更具体地说,一个或多个其他子处理单元208可以期望截止到某个期限获得在发生错误之前被调度来由受影响的子处理单元208执行的处理任务的结果,以满足多处理系统的所需要的实时和/或多媒体体验目标。替代地,或此外,可以期望一个或多个其他子处理单元与受影响的子处理单元共享或否则发送处理结果(或者其他的这种数据),以满足这些目的。因此,在步骤556,确定这些通讯要求,从而可以更好地考虑哪个子处理单元208应该接收重新分配的处理器任务。
在步骤558(图16),确定参予子处理单元208的性能能力和通讯能力。更具体地说,确定在每个参予子处理单元208上的当前处理器负荷以挑选用于从经历错误的子处理单元208接收重新分配的处理器任务的候选者。而且,最好还确定与参予子处理单元208关联的、诸如通讯带宽和通讯延迟的通讯能力,从而可以将显示不适当通讯能力的子处理单元208从候选者中除去。
不论通讯延迟和/或通讯带宽是要求或是成本,它们通常都是与在诸如系统500(图12)的总体系统中的子处理单元之间可能存在的通讯接口相联系的问题。这些接口可以包括输入/输出总线和/或总线接口,其可以在子处理单元设备的内部或之间。通讯接口可以还包括交换结构互连、网络接口、和/或其他网络传输设备。实际上,本发明所考虑的通讯接口包括在能够增加或减少延迟和/或增加或减少带宽的子处理单元之间的通讯路径中的任何设备。
本领域的普通技术人员可以从这里的描述中理解,随着分布多处理系统500(图12)的范围的扩展,跟踪参予子处理单元208的通讯能力和性能能力的工作就变得越发地困难。因此,包含参予子处理单元208的多处理单元可以同诸如图12中所示的服务器508A的管理实体进行通讯。管理实体508A最好包括具有表的数据库,结合关于参予子处理单元208的性能能力和通讯能力的维护信息来利用所述表。
关于这个方面,现在参照图17,其示出了最好包括在表600中的信息种类。具体地说,表600最好包括指示参予子处理单元的处理器负荷的性能信息。该信息包括在列602中。表600最好还包括指示在可能被重新分配有处理器任务的一个参予子处理单元和将与给定子处理单元共享处理结果(数据)的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟的通讯信息。该信息在列604中示出。
表600最好还包括指示将参予子处理单元放置在系统的多处理单元之间的什么位置处的位置信息。这种位置信息最好包括具体产品的标识符(列606)、在该产品内的具体电路板的标识符(列608)、在给定电路板上的诸如宽带引擎的具体多处理单元的标识符(列610)、和在给定多处理单元内的具体子处理单元的标识符(列612)。管理实体508A最好从包含参予子处理单元的各个多处理单元接收性能信息、通讯信息、和/或位置信息。
用这种安排,给定多处理单元的主处理单元可以向管理实体508A广播询问,其中所述询问包含对完成与其中已经发生了错误的子处理单元关联的处理器任务所需要的处理能力和通讯能力的指示(图16中的步骤558A)。随后,管理实体508A可以搜索数据库(即,表600)以确定用于从正在经历错误的子处理单元接收重新分配的处理器任务的候选者(图16的步骤558B)。
参照图18,在步骤560,确定参予子处理单元的任何性能能力是否与在询问中所包含的性能要求匹配。如果确定的结果是否定的,则处理流程最好行进到步骤562,其中发布对所述询问的响应以指示不能够执行重新分配。如果步骤560处的确定结果是肯定的,则处理流程最好行进到步骤564。在这里,进一步确定任何参予子处理单元的通讯能力是否与所述询问的通讯要求匹配。如果步骤564处的确定结果是否定的,则流程最好行进到步骤566,其中发布对所述询问的响应以指示不可以执行处理器任务的重新分配。如果在步骤564处的确定结果是肯定的,则流程最好行进到步骤568。在这里,(例如通过网络地址、产品号码、宽带号码、多处理单元号码、和/或子处理单元号码)标识一个或多个参予子处理单元。最好将这种信息提供给发布了询问的多处理单元,从而可以将受影响的子处理单元的处理器任务重新分配给所选择的参予子处理单元(步骤570)。
在步骤572,正在经历错误的子处理单元最好如参照图5的步骤314所讨论的被关闭和/或经历重新引导过程。也可以考虑在图6和/或图7中所示的进一步的处理步骤。
因为根据参予子处理单元的性能能力和通讯能力来重新分配受影响的子处理单元的处理器任务,所以可以避免由于不充裕的通讯带宽和/或过分的通讯延迟所导致的不利影响。这增加了用户的实时、多媒体体验不受到错误和因此产生的处理器任务的重新分配的不利影响的可能性。
现在参照图19和20,它们示出了本发明的一个或多个另外的方面。具体地说,可以在其中(诸如通过所有权、合同义务等)与其关联的一个或多个实体可以在将给定子处理单元的处理器任务重新分配时针对对其的使用而收取费用的租赁协议中使用参予子处理单元。关于这个方面,管理实体508A的表600A最好包括在图17的表600中所包含的信息以及包括可用性信息和费用信息的进一步信息。可用性信息最好至少指示可以被租赁使用的参予子处理单元的处理能力。例如,能够以每秒多少兆指令(MIPS)或本领域中已知的某些其他数量方法来将处理能力量化。费用信息最好指示使用租赁的参予子处理单元的对应费用。费用信息最好有利于费用的量化,如每MIP多少元钱或其他合适的量化。管理实体508最好从包括参予子处理单元的多处理单元接收可用性信息614和/或费用信息616(以及在那里被制表的其他信息)。
用这种安排,给定多处理单元的主处理单元可以向管理实体508A广播询问,其中所述询问包括对完成与其中已经发生错误的子处理单元关联的处理器任务所需要到处理能力和通讯能力的指示(图16的步骤558A)。所述询问可以还包括给定子处理单元的任务的处理器负荷、给定子处理单元的位置等。注意,给定子处理单元可以执行多个处理器任务,每个将不同的负荷放置在处理单元上。因此,可以根据情况将“处理器负荷”考虑为与一组处理器任务相关的或特定于一组处理器任务的处理器任务。而且进一步,所述询问可以包括指示来自一个或多个参予子处理单元的租赁处理能力的可接受费用的租赁信息。例如,与其中已经发生错误的给定子处理单元关联的实体可能希望对费用设置某种限制或目标,从而其原意支付费用以从一个或多个参予子处理单元租赁处理能力。最好在租赁信息内以某种方式将这种信息量化。
最好使用管理实体508A的表600A来确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。为此,管理实体508A可以使用由与给定子处理单元关联的主处理单元发布的询问作为访问数据库(即表600A)以确定用于接收从正在经历错误的子处理单元重新分配来的处理器任务的候选者的搜索条件(图16的步骤558B)。
参照图20,在步骤580,最好确定参予子处理单元的任何性能能力是否与在询问中所包括的性能要求匹配。如果确定的结果是否定的,则处理流程最好行进到步骤582,其中发布对该询问的响应以指示不能执行重新分配。如果在步骤580处的确定结果是肯定的,则处理流程最好行进到步骤584。在这里,进一步确定任何参予子处理单元的通讯能力是否与询问的通讯要求匹配。如果在步骤584处的确定的结果是否定的,则流程最好行进到步骤586,其中发布对该询问的响应以指示不可以执行对处理器任务的重新分配。如果在步骤584处的确定结果是肯定的,则流程最好行进到步骤590。
在步骤590处,确定与参予子处理单元关联的表600A的任何费用信息616是否与在询问中所包括的租赁信息匹配。在这个方面,所述确定可以判断费用信息是否指示付费少于或等于愿意为租赁一个或多个参予自处理单元的处理器能力而支付的金额。最好选择具有最低费用的、用于租赁的一个或多个子处理单元来接收给定子处理单元的处理器任务的重新分配。如果在步骤590处的确定结果是否定的,则处理流程最好行进到步骤592,其中发布对该询问的响应以指示可以不执行处理器任务的重新分配。如果在步骤590处的确定结果是肯定的,则处理流程最好行进到步骤594。
在步骤594,(例如,通过网络地址、产品、宽带号码、多处理单元号码、和/或子处理单元号码)识别一个或多个参予子处理单元。最好将该信息提供给发布了询问的多处理单元,从而可以将受影响的子处理单元的处理器任务重新分配给所选择的、用于租赁的参予子处理单元。
在步骤598,最好将正在发生错误的子处理单元关闭并且经历如参照图5的步骤314所讨论的重新引导过程。还可以考虑图6和/或图7中所示的进一步的处理步骤。
根据本发明的一个或多个另外方面,最好可以为从给定子处理单元向一个或多个参予子处理单元重新分配处理器任务提供便利,而不使用如上面参照图12-20所讨论的管理实体508A。实际上,随着对通过网络在处理单元之间进行的实时通讯的需求的增加,中央服务器或管理实体508A的使用可能变得难以实施。因此,最好实现不需要利用管理实体的处理器对处理器通讯和处理器任务的重新分配。
为此,最好可以操作与正在经历处理错误的给定子处理单元关联的主处理单元以发布一个或多个要求响应的请求给一个或多个参予子处理单元。要求响应的请求的目的是从参予子处理单元获得响应,从而主处理单元可以确定重新分配选项。最好通过响应获得的信息种类至少包括在图17和19的表600和600A中所包含的一些信息。实际上,参予子处理单元可以容易地接收要求响应的请求,并且准备和向其发送包含性能信息、通讯信息、可用性信息、费用信息、产品识别信息、电路板识别信息、宽带引擎识别信息、和子处理单元识别信息中的至少一个的响应。
参照图21和22,示出了如何发布要求响应的一个或多个请求和与一个或多个子处理单元关联的特定主处理单元如何接收一个或多个响应的例子。如图21中所示,多处理器系统700可以包括被放置在相同或不同邻近位置的多个电路板(和/或产品或系统)702。在任何情况中,电路板702A-C的每一个可以包含一个或多个处理部件PE0、PE1、PE2等。可以完全根据具体应用的要求使用图1的结构和/或图2的结构来实现每个处理器部件。通过包括多个数据总线、通讯桥接器、和/或其他通讯接口硬件和软件的网络来互连各个处理器部件,其细节是已知技术。但是,注意每个总线和/或通讯桥接器(可以将其当作通讯接口)具有包括延迟和带宽限制的性能限制。当确定处理器任务的重新分配时应该考虑这些通讯限制(或成本)。
电路板702A包括数据总线704A和桥接器706A。电路板702B包括数据总线704B和桥接器706B。电路板702C包括数据总线704C和桥接器706C。根据本发明的一个实施方式,可以通过数据总线708A来互连电路板702A和702B的桥接器706A和706B。类似地,可以通过总线708B互连电路板702C的桥接器706C到一个或多个另外的桥接器(未示出)。可以通过经由数据总线712依次互连的桥接器电路710A和710B来互连数据总线708A和708B。
数据总线704A可以呈现1的延迟和10的带宽。应该理解该延迟和带宽可以仅仅与数据总线704A关联和/或与数据总线704A和桥接器706A的组合关联。还应该理解仅仅通过举例给出了该延迟和带宽值,并且为了简明和清楚的目的它们已经被大大简化了。数据总线704B和数据总线704C都可以呈现2的延迟和8的带宽。数据总线708A可以呈现5的延迟和3的带宽,而数据总线708B可以呈现4的延迟和4的带宽。而且,数据总线712可以呈现20的延迟和1的带宽。
假设在处理器部件PE0内的一个或多个子处理单元出现处理错误,则处理器部件PE0的主处理单元可以发布要求响应的一个或多个请求到参予子处理单元。要求响应的请求最好是能够通过在处理器部件PE0之间的网络传播到其他处理器部件和子处理单元的网络数据分组的形式。具体地说,可由处理器部件PE0发布到处理器部件PE2的、要求响应的请求可以通过数据总线704A、通过桥接器706A、通过数据总线708A、通过桥接器710A、通过数据总线712、通过桥接器710B、通过数据总线708B、通过桥接器706C、通过数据总线704C而传到处理器部件PE2。注意可以将从处理器部件PE0到处理器部件PE2的、要求响应的请求的这种数据路径称为上行链路数据路径。
要求响应的请求能够积累与要求响应的请求通过整个网络传播时它们所遇到的通讯接口关联的通讯信息(例如,以延迟和带宽的形式)。在上面的例子中,对于从处理器部件PE0传播到处理器部件PE2的、要求响应的请求,该要求响应的请求最好积累与数据总线704A、708A、712、708B和704C关联的各个延迟和带宽参数。更具体地说,如示,至少到要求响应的请求离开桥接器706A的时候,要求响应的请求(在720处)积累与数据总线704A关联的1和10的延迟和带宽参数。之后,至少到要求响应的请求离开桥接器710A的时候,要求响应的请求(在722处)积累与数据总线708A关联的5和3的延迟和带宽参数。因此积累结果722包括1和10的一对延迟和带宽以及5和3的一对延迟和带宽。而且,至少到要求响应的请求通过桥接器710B的时候,要求响应的请求(在724处)积累与数据总线712关联的20和1的延迟和带宽参数。因此积累结果724在该阶段包括1、10;5、3;和20、1的几对延迟和带宽。之后,要求响应的请求(在726处)积累与数据总线708B关联的4和4的延迟和带宽参数。因此积累结果726包括1、10;5、3;20、1;和4、4的几对延迟和带宽。最后,要求响应的请求(在728处)积累与数据总线704C关联的2和8的延迟和带宽参数。因此积累结果728包括1、10;5、3;20、1;4、4和2、8的几对延迟和带宽。
根据本发明的一个或多个方面,至少根据当要求响应的请求通过网络从处理器部件PE0传播到处理器部件PE2时所积累的通讯信息(例如,延迟和带宽参数),来计算对与从处理器部件PE0的一个子处理单元向处理器部件PE2的一个或多个子处理单元重新分配任何处理器任务关联的通讯成本的估计。
如在上面所讨论的,正在经历处理错误的给定子处理单元的处理器任务的结果可以试图由处理器部件PE0内的一个或多个子处理单元来使用,或者该结果可以试图由位于诸如处理器部件PE1的另外的处理器部件中的一个或多个子处理单元来使用。也如上面已经讨论的,一个或多个另外的子处理单元的处理结果或其他的这种数据可以试图由受影响的子处理单元来使用,从而影响其处理器任务。
假设给定子处理单元的处理器任务的结果试图在处理器部件PE0内的一个或多个子处理单元中使用(或者反之亦然),则基本上可以直接使用表示处理器部件PE0和处理器部件PE2之间的通讯接口的通讯成本的积累结果728,来确定在要从给定子处理单元接收结果或提供结果到给定子处理单元的、处理器部件PE0内的一个或多个子处理单元与可能被重新分配有处理器任务的、处理器部件PE2内的一个或多个参予子处理单元之间可能存在的通讯成本。
在另一方面,假设在处理器部件PE0内的给定子处理单元的处理器任务的结果试图在例如处理器部件PE1内的一个或多个子处理单元中使用(或反之亦然),则在将处理器任务重新分配给处理器部件PE2的情况中,可以使用关于网络的通讯接口的进一步信息来确定总的通讯成本。就这方面来说,处理器部件PE0的主处理单元最好将一个或多个要求响应的请求发布到试图从给定子处理单元接收结果或试图将结果发送到给定子处理单元的一个或多个子处理单元。在这个例子中,处理器部件PE0的主处理单元可以将要求响应的请求发布给处理器单元PE1和/或其中的子处理单元。这是假设在之前没有机会从PE1获得通讯信息。但是如果之前PE0和PE1彼此进行过通讯(例如,在检测到错误之前),则可能PE0不必发布要求响应的请求给PE0。假设需要请求,则在该请求从处理器部件PE0传播到处理器部件PE1期间所获得的积累的通讯信息730因此包括1、10;5、3;和2、8的几对延迟和带宽。
与从处理器部件PE0的给定子处理单元到处理器部件PE2的一个或多个子处理单元的处理器任务重新分配关联的通讯成本的计算可以包括比较对应积累结果728和730。在这个例子中,处理器部件PE0的主处理单元可以执行对积累结果728和730的每一个的对应几对延迟和带宽的比较,以至少获得对可能在从处理器部件PE1到处理器部件PE2的上行链路路径中所积累的几对延迟和带宽的估计。具体地说,对应积累结果728和730的几对延迟和带宽的并肩比较揭示前两对是相同的:1、10和5、3。在每个积累结果中的随后的一对延迟和带宽是不同的,在积累结果728中是20、1而在积累结果730中是2、8。因此从处理器部件PE1到处理器部件PE2的所估计的上行链路数据路径积累结果是2、8(根据积累结果730);20、1(根据积累结果728);4、4(根据积累结果728);和2、8(根据积累结果728)。
可以根据对应积累结果730、728和从对积累结果728和730的比较中所获得的估计积累结果,来计算从处理器部件PE1到PE0、从处理器部件PE0到PE2、和从处理器部件PE1到PE2的上行链路数据路径的通讯成本。对于处理器部件PE0和PE1之间的上行链路数据路径的通讯成本,将各个延迟参数进行合计以获得上行链路数据路径的总延迟。这产生合计上行链路通讯延迟1+5+2=8。对处理器部件PE0和PE1之间的上行链路数据路径的带宽参数进行评估以确定最小带宽。在本例中,最低带宽3与数据总线708B关联。因此,用于处理器部件PE0和PE1之间的上行链路数据路径的最低通讯带宽是3。
还可以将这些计算应用于在处理器部件PE0和PE2之间、和在处理器部件PE1和PE2之间的上行链路数据路径。因为如果将处理器部件PE0的给定子处理单元的处理器任务重新分配给处理器部件PE2,则在(从给定子处理单元接收结果或发送结果到给定子处理单元的)处理器部件PE1和处理器部件PE2之间的上行链路数据路径在满足通讯要求以实现总处理系统的实时、多媒体目标中是非常重要的,所以对在处理器部件PE1和PE2之间的上行链路数据路径的合计延迟和最小带宽是特别感兴趣。
根据本发明的一个或多个另外方面,最好计算与在感兴趣的各个处理器部件之间的上行链路数据路径和下行链路数据路径两者都关联的通讯成本。例如,如果要确定是否应该将处理器部件PE0的给定子处理单元的处理器任务重新分配给处理器部件PE2,则应该将上行链路和下行链路数据路径当作在(从给定子处理单元接收结果或发送结果到给定子处理单元的)处理器部件PE1和处理器部件PE2之间。处理器部件PE0的主处理单元通过接收与上行链路数据路径和下行链路数据路径两者都关联的通讯信息(例如,延迟和带宽参数)来评估这些上行链路和下行链路通讯成本。在优选实施方式中,操作由参予子处理单元(或处理器部件)发布到起始处理器部件(在本例中,处理器部件PE0)的主处理单元的一个或多个响应,来积累关于与在这些响应传播到主处理单元时它们所遇到的通讯接口关联的延迟和带宽的进一步通讯信息。
现在参照图22,其示出了处理器部件PE2所发布的响应在其上传播的、从处理器部件PE2到处理器部件PE0的下行链路数据路径。在优选实施方式中,响应还可以包括当处理器部件PE2接收到要求响应的请求时所获得的积累结果728。因此,当响应通过下行链路数据路径从处理器部件PE2传播到处理器部件PE0时,积累结果750、752、754、756和760可以即包括上行链路积累结果728又包括下行链路积累结果。因此,由处理器部件PE0(和/或其主处理部件)所接收的积累结果760包含上行链路和下行链路数据路径延迟和带宽信息。上行链路数据路径积累结果包括几对延迟和带宽1、10;5、3;20、1;4、4;和2、8。下行链路数据路径积累结果包括几对延迟和带宽2、8;4、4;20、1;5、3;和1、10。
注意在这里所讨论的例子中,上行链路和下行链路数据路径积累结果是对称的。但是根据本发明的另外方面,上行链路和下行链路数据路径积累结果可以不是对称的,这都根据网络的具体情况而定。
如上所述,处理器部件PE0的主处理单元最好能够估计作为在试图从正在经历错误的给定子处理单元接收结果或试图将结果发送给正在经历错误的给定子处理单元的一个或多个子处理单元之间的上行链路和下行链路数据路径积累结果。可以将对于上行链路数据路径例子在上面所讨论的相同方法使用于下行链路数据路径的情况。现在参照图23,其示出了可以由处理器部件PE0计算的、关于处理器部件PE1和PE2的上行链路数据路径积累结果和下行链路数据路径积累结果。处理器部件PE0的主处理单元最好计算作为处理器部件PE1和PE1之间的合计上行链路通讯延迟、上行链路数据路径带宽、合计下行链路通讯延迟、和下行连接数据路径带宽。
最好由处理器部件PE0的主处理单元使用这些通讯成本来确定将处理器任务重新分配给处理器部件PE2是否可以满足实现实时处理目标的通讯要求。根据本发明的各个方面,考虑处理器部件PE0的主处理单元可以通过整个系统从参予子处理单元(和/或处理器部件)接收许多响应,从而能够以与上面所讨论的一致的方式来评估任何数量的用于将给定子处理单元的处理器任务进行重新分配的选择方案。
根据本方面的一个或多个进一步方面,一个或多个数据总线708A、708B、712等能够将通讯成本信息提供到给定处理器部件、主处理单元、或子处理单元。实际上,每个总线可以包括能够访问通讯成本信息的总线仲裁器逻辑单元(未示出)。当将发送分组的请求(诸如通过主数据分组)提供给总线仲裁器逻辑单元(其通常无论如何都正常工作)时,该仲裁器可以用同总线关联的通讯成本信息进行响应。因此,在这种实施方式中不需要中央服务器来管理通讯成本信息。
注意,给定PE或其子处理单元可以发布预留请求给一个或多个仲裁器单元,从而可以预留作为在两个和多个PE之间的带宽。响应于预留请求,总线仲裁器单元可以将所请求的带宽量从可获得带宽中减去,以确保满足请求PE和所关联的PE(或多个PE)之间的通讯需求。被发布给总线仲裁单元的保留清除请求可以清除该预留。
虽然已经投入了许多关注给如何根据通过使用要求响应的请求而获得的信息和通过整个网络传播的响应来评估通讯成本,但是还考虑要求响应的请求和/或响应可以包括其他类型的信息,诸如在表600(图17)和表600A(图19)中发现的那些。例如,参予子处理单元发布的响应还可以包括性能信息、可用性信息、成本信息、和位置信息,从而处理器部件PE0的主处理单元可以评估这样的信息以对将给定子处理单元的处理器任务进行重新分配进行确定。
有利地,在不需要可能对这种重新分配进行的速度具有不利影响的管理实体的情况下,受影响的子处理单元的处理器任务的重新分配可以基于参予子处理单元的性能能力和通讯能力中的一个或多个。
虽然已经参照具体实施方式在这里来描述了本发明,但是应该理解这些实施方式仅仅是本方面的原理和应用的说明。因此应该理解在不偏离由所附权利要求所定义的本发明的精神和范围的情况下,可以对所述说明性的实施方式进行许多修改并且可以设想其他结构。
产业的可利用性
可以将本方明应用于当发生处理器错误时用于在多处理系统的子处理单元之间重新分配处理器任务的技术中。

Claims (101)

1.一种方法,包括:
监测处理器任务和其关联的处理器负荷,所述处理器负荷被分配而将由与主处理单元关联的各个子处理单元执行;
检测是否在给定的一个子处理单元中已经发生了处理错误;以及
根据给定子处理单元的处理器任务的处理器负荷以及参予子处理单元的处理器负荷,将给定子处理单元的所有处理器任务重新分配给包括与主处理单元关联的其他子处理单元的一个或多个参予子处理单元。
2.根据权利要求1所述的方法,还可以包括下面操作中的至少一个:
(i)关闭;和(ii)重新引导给定子处理单元。
3.根据权利要求1所述的方法,还包括:在子处理单元之间分配处理器任务,从而至少一个子处理单元基本上被卸载并且可以用于从给定子处理单元接收一些或者全部处理器任务。
4.根据权利要求3所述的方法,还包括命令没有被调度来执行任何处理器任务的一个或多个卸载的子处理单元进入备用状态。
5.根据权利要求4所述的方法,其中:
每个所述子处理单元包括下面中的至少一个:(i)电源中断电路;和(ii)时钟中断电路;和
所述方法包括使用电源中断电路和时钟中断电路之中的至少一个以响应于关机命令将子处理单元置于备用状态。
6.根据权利要求5所述的方法,其中
每个所述子处理单元包括电源和电源中断电路;和
所述方法包括响应于关机命令使用电源中断电路来关断电源以将目标子处理单元置于备用状态。
7.根据权利要求1所述的方法,其中参予子处理单元包括一组或多个对应组的子处理单元,每个组与对应的主处理单元关联。
8.根据权利要求7所述的方法,其中子处理单元的各个组的每一个和关联的主处理单元:
(i)是多处理单元的集合的一部分,其中子处理单元的对应组和主处理单元与子处理单元的一个或多个其他的对应组和关联的主处理单元共享公共数据总线;
(ii)是独立的多处理单元,其中子处理单元的对应组和主处理单元不与子处理单元的任何其他组和关联的主处理单元共享公共数据总线;或
(iii)是分布的多处理单元的至少一部分,其中将至少某些主处理单元和子处理单元彼此远离放置。
9.根据权利要求8所述的方法,其中可将多处理单元、独立多处理单元、和分布多处理单元中的至少一些按照下面情况的至少一种进行放置:
(i)在共同或者不同的电路板上;
(ii)在共同或者不同的产品中;和
(iii)在共同或者不同的位置处。
10.根据权利要求9所述的方法,还包括:
确定在给定子处理单元和将与该给定子处理单元共享处理结果的一个或多个子处理单元之间所需要的、至少包括通讯带宽和通讯延迟之中一个的通讯要求;和
进一步根据所述通讯要求进行给定子处理单元的任务的重新分配。
11.根据权利要求10所述的方法,其中所述共享的结果包括给定子处理单元的处理器任务的结果。
12.根据权利要求9所述的方法,其中要共享处理结果的一个或多个子处理单元可以包括给定子处理单元。
13.根据权利要求10所述的方法,还包括:
确定在将与给定子处理单元共享处理结果的一个或多个子处理单元和可以被重新分配有处理器任务的一个或多个参予子处理单元之间可能存在的、至少包括通讯带宽和通讯延迟之一的通讯成本;和
进一步根据所述通讯要求和所述通讯成本的比较来进行给定子处理单元的任务的重新分配。
14.根据权利要求13所述的方法,其中所述通讯要求和所述通讯成本至少包括下面之一:
(i)在共同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(ii)在不同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(iii)在共同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(iv)在不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(v)在共同位置处的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;和
(iv)在每个都处于不同位置处的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟。
15.根据权利要求14所述的方法,其中在两个子处理单元之间的一个或多个数据通讯接口至少包括下面之一:
(i)内部子处理单元输入/输出总线接口;
(ii)子处理单元之间输入/输出总线接口;
(iii)交换结构互连;
(iv)网络接口卡;和
(v)数据网络。
16.根据权利要求10所述的方法,其中多处理单元、独立多处理单元和分布多处理单元中的至少之一可以与管理实体进行通讯,所述管理实体包括表,该表至少包含下面之一:
(i)指示参予子处理单元的处理器负荷的性能信息;
(ii)指示参予子处理单元被放置在多处理单元、独立多处理单元、和分布多处理单元之中的位置的位置信息;和
(iii)指示在可能被重新分配有处理器任务的一个参予子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟至少之一的通讯信息。
17.根据权利要求16所述的方法,还包括:响应于在参予子处理单元之间的处理器负荷、位置、通讯带宽、或通讯延迟的至少一个中的任何变化来更新所述表。
18.根据权利要求16所述的方法,还包括:使用所述表来确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。
19.根据权利要求18所述的方法还包括:从与给定子处理单元关联的主处理单元将询问发送到管理实体,该询问至少包括下面之一:(i)给定子处理单元的处理器任务的处理器负荷;(ii)给定子处理单元的位置;和(iii)给定子处理单元的通讯要求。
20.根据权利要求19所述的方法,还包括:将询问的处理器任务的处理器负荷、位置、和通讯要求之中的至少一个与所述表的性能信息、位置信息、和通讯信息之中的至少一个进行匹配,以确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。
21.根据权利要求10所述的方法,其中多处理单元、独立多处理单元、分布多处理单元中的至少一个与管理实体进行通讯,所述管理实体包括表,该表至少包含下面之一:
(i)指示可以被租赁使用的参予子处理单元的处理能力、和指示这种参予子处理单元的处理器负荷的性能信息中至少一个的可用性信息;
(ii)指示使用可以被租赁的参予子处理单元的对应费用的费用信息;
(iii)指示可以被租赁的参予子处理单元被放置在多处理单元、独立多处理单元和分布多处理单元之中的位置的位置信息;和
(iv)指示在可以被重新分配有处理器任务的、用于租赁的一个参予子处理单元和将与给定处理单元共享处理结果的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟的通讯信息。
22.根据权利要求21所述的方法,还包括:响应于用于租赁的参予子处理单元之间的可用性信息、费用信息、位置信息、或通讯信息之中的任何变化来更新所述表。
23.根据权利要求21所述的方法,还包括:使用所述表来确定应该将给定子处理单元的处理器任务重新分配给哪个用于租赁的参予子处理单元。
24.根据权利要求23所述的方法,还包括:从与给定子处理单元关联的主处理单元发送询问到管理实体,所述询问至少包括下面之一:(i)给定子处理单元的处理器负荷;(ii)给定子处理单元的位置;(iii)指示从一个或多个用于租赁的参予子处理单元租赁处理能力的可接受费用的租赁信息;和(iv)通讯要求。
25.根据权利要求24所述的方法,还包括:将询问的处理器负荷、可接受费用、位置、和通讯要求中的至少一个与所述表的可用性信息、费用信息、位置信息、和通讯信息中的至少一个进行匹配,以确定应该将给定子处理单元的处理器任务重新分配给哪个用于租赁的参予子处理单元。
26.根据权利要求25所述的方法,其中当被重新分配有给定子处理单元的处理器任务时,所述用于租赁的参予子处理单元与可以收集对其使用的费用的一个或多个实体关联。
27.根据权利要求24所述的方法,还包括:可以将询问的处理器负荷、可接受费用、位置、和通讯要求与所述表的可用性信息、费用信息、位置信息、和通讯信息进行匹配,从而可以将给定子处理单元的处理器任务重新分配给用于租赁的、具有最低费用的一个或多个参予子处理单元。
28.根据权利要求27所述的方法,其中当被重新分配有给定子处理单元的处理器任务时,所述用于租赁的参予子处理单元与可以收集对其使用的费用的一个或多个实体关联。
29.根据权利要求13所述的方法,还包括:
从与给定子处理单元关联的主处理单元发布要求响应的一个或多个请求到一个或多个参予子处理单元;
在要求响应的一个或多个请求中积累通讯信息,所述通讯信息指示当对应的要求响应的请求从主处理单元传播到一个或多个参予子处理单元时,与所述对应的要求响应的请求所遇到的任何通讯接口关联的通讯延迟和通讯带宽中的至少一个;
至少计算对在将与给定子处理单元共享处理结果的一个或多个子处理单元和根据所积累的通讯信息可以被重新分配有处理器任务的一个或多个参予子处理单元之间可能存在的通讯成本的估计。
30.根据权利要求29所述的方法,其中要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元可以包括给定子处理单元。
31.根据权利要求29所述的方法,其中要求响应的一个或多个请求是能够通过通讯网络传输的网络数据分组的形式。
32.根据权利要求31所述的方法,其中所述通讯网络是因特网和与其进行通讯的任何其他网络中的至少之一。
33.根据权利要求29所述的方法,还包括:
在主处理单元处从一个或多个参予子处理单元接收一个或多个响应;和
将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
34.根据权利要求33所述的方法,其中一个或多个响应是能够通过通讯网络传输的网络数据分组的形式。
35.根据权利要求34所述的方法,其中所述通讯网络是因特网和与其链接的任何其他网络中的至少之一。
36.根据权利要求33所述的方法,还包括:
计算从给定子处理单元到响应了要求响应的请求的一个或多个参予子处理单元的上行链路数据路径的通讯成本,
其中这种计算至少包括下面之一:
(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,将与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;和
(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽。
37.根据权利要求36所述的方法,还包括:根据对于每个上行链路数据路径的合计上行链路通讯延迟和最低通讯带宽中的至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
38.根据权利要求33所述的方法,还包括:
在一个或多个响应中积累进一步的通讯信息,所述进一步的通讯信息指示当对应的响应从一个或多个参予子处理单元传播到主处理单元时与所述响应所遇到的任何通讯接口关联的通讯延迟和通讯带宽之中至少一个;和
根据所积累的通讯信息和所积累的进一步通讯信息来计算通讯成本。
39.根据权利要求38所述的方法,其中每个响应既包括积累的通讯信息又包括对应的积累的进一步通讯信息,从而所述积累的通讯信息和所述积累的进一步的通讯信息对于发布了一个或多个要求响应的请求的主处理单元是可用的。
40.根据权利要求38所述的方法,还包括:
计算给定子处理单元和响应了要求响应的请求的一个或多个参予子处理单元之间的上行链路数据路径和下行链路数据路径的通讯成本,
其中这种计算至少包括下面之一:
(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;
(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽;
(iii)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元传播到主处理单元时与所述响应所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个下行链路数据路径的合计下行链路通讯延迟;和
(iv)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元传播到主处理单元时与所述响应所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个下行链路数据路径的最低的通讯带宽。
41.根据权利要求40所述的方法,还包括:根据对于每个上行链路数据路径的合计上行链路通讯延迟、对于每个下行链路数据路径的合计下行链路通讯延迟、对于每个上行链路数据路径的最低通讯带宽、和对于每个下行链路数据路径的最低通讯带宽之中至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
42.根据权利要求33所述的方法,还包括:
从主处理单元将要求响应的一个或多个请求发布要与给定子处理单元共享处理结果的一个或多个子处理单元;
积累指示在对应的要求响应的请求从主处理单元传播到将与给定子处理单元共享处理结果的一个或多个子处理单元时,与所述请求所遇到的任何通讯接口关联的通讯延迟和通讯带宽之中至少一个的进一步的通讯信息;和
根据所积累的通讯信息和所积累的进一步通讯信息之间的任何差异来计算通讯成本。
43.根据权利要求42所述的方法,还包括:
计算在给定子处理单元和响应了要求响应的请求的一个或多个参予子处理单元之间、以及在给定子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间的上行链路数据路径和下行链路数据路径的通讯成本,
其中这种计算至少包括下面之一:
(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元、和/或到将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;
(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元、和/或到将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽;
(iii)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元、和/或从将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个下行链路数据路径的合计下行链路通讯延迟;和
(iv)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元、和/或从将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个下行链路数据路径的最低的通讯带宽。
44.根据权利要求43所述的方法,还包括:根据对于每个上行链路数据路径的合计上行链路通讯延迟、对于每个下行链路数据路径的合计下行链路通讯延迟、对于每个上行链路数据路径的最低通讯带宽、和对于每个下行链路数据路径的最低通讯带宽之中至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
45.根据权利要求33所述的方法,还包括:
从与给定子处理单元关联的主处理单元发送预留请求到与给定子处理单元和将要被重新分配有给定子处理单元的处理器任务的一个或多个参予子处理单元之间的通讯总线关联的一个或多个总线仲裁器,
其中所述预留请求使得一个或多个总线仲裁器为至少下面目的之一预留通讯带宽:(i)执行重新分配的处理器任务;和(ii)将处理器任务的结果发送到要接收这种结果的一个或多个其他子处理单元。
46.根据权利要求45所述的方法,还包括:
从与给定子处理单元关联的主处理单元发送预留清除请求到一个或多个总线仲裁器,
其中该预留清除请求使得一个或多个总线仲裁器清除对通讯带宽的预留。
47.根据权利要求33所述的方法,其中所述响应至少包括积累的信息、和指示发出响应的参予子处理单元的对应处理器负荷的性能信息之中的一个。
48.根据权利要求47所述的方法,还包括:根据发出响应的参予子处理单元的对应处理器负荷和给定子处理单元的处理器任务的处理器负荷的比较、通讯要求、积累的信息,选择一个或多个参予子处理单元用于给定子处理单元的处理器任务的重新分配。
49.一种设备,包括:
多个子处理单元,每个都可以进行操作以执行处理器任务;和
主处理单元,可以对其操作以:
(i)监测处理器任务和其关联的处理器负荷,所述处理器负荷被分配而将由各个子处理单元执行;
(ii)检测在给定的一个子处理单元中是否已经发生了处理错误;和
(iii)根据给定子处理单元的处理器任务的处理器负荷以及参予子处理单元的处理器负荷,将给定子处理单元的所有处理器任务重新分配给包括与主处理单元关联的其他子处理单元的一个或多个参予子处理单元。
50.根据权利要求49所述的设备,其中还可以操作所述主处理单元以:
(iv)进行下面操作之一:发布关闭命令到给定子处理单元和发布重新引导命令到给定子处理单元。
51.根据权利要求49所述的设备,其中将所述主处理单元按照远离一个或多个子处理单元或者和一个或多个子处理单元在一处之中至少一种方式进行放置。
52.根据权利要求49所述的设备,其中将一个或多个所述子处理单元彼此远离地进行放置。
53.根据权利要求49所述的设备,其中所述子处理单元使用基本上异种的计算机架构或同种的计算机架构。
54.根据权利要求49所述的设备,其中可以进一步操作所述主处理单元以在子处理单元之间分配处理器任务,从而至少一个子处理单元基本上被卸载并且可以用于从给定子处理单元接收一些或者全部处理器任务。
55.根据权利要求54所述的设备,其中可以进一步操作所述主处理单元以命令没有被调度来执行任何处理器任务的一个或多个卸载的子处理单元进入备用状态。
56.根据权利要求55所述的设备,其中所述子处理单元至少包括下面之一:(i)电源中断电路;和(ii)时钟中断电路,可以操作其每一个以响应于断电命令将给定子处理单元放置到低功耗状态。
57.根据权利要求56所述的设备,其中每个所述子处理单元包括电源和电源中断电路,并且可以操作电源中断电路以响应于断电命令而关掉电源从而将给定子处理单元放置到备用状态。
58.根据权利要求49所述的设备,还包括:一个或多个对应组的子处理单元,每个组与对应的主处理单元关联,其中参予子处理单元包括一个或多个对应组的子处理单元。
59.根据权利要求58所述的设备,其中子处理单元的每个对应的组和关联的主处理单元:
(i)是多处理单元集合的一部分,其中子处理单元的对应组和主处理单元与子处理单元的一个或多个其他对应组和关联的主处理单元共享公共数据总线;
(ii)是独立的多处理单元,其中子处理单元的对应组和主处理单元不与子处理单元的任何其他组和关联的主处理单元共享公共数据总线;或
(iii)是分布的多处理单元的至少一部分,其中将至少某些主处理单元和子处理单元彼此远离放置。
60.根据权利要求59所述的设备,其中将至少一些多处理单元、独立多处理单元、和分布的多处理单元按照下面情况的至少一种进行放置:(i)在共同或者不同的电路板上;(ii)在共同或者不同的产品中;和(iii)在共同或者不同的位置。
61.根据权利要求60所述的设备,其中可以进一步操作所述主处理单元以确定在给定子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间所需要的、包括通讯带宽和通讯延迟中至少一个的通讯要求。
62.根据权利要求61所述的设备,其中要共享处理结果的一个或多个子处理单元可以包括给定子处理单元。
63.根据权利要求61所述的设备,其中所共享的结果包括给定子处理单元的处理器任务的结果。
64.根据权利要求61所述的设备,其中还可以操作所述主处理单元以根据通讯要求来进行给定子处理单元的任务的重新分配。
65.根据权利要求61所述的设备,其中还可以操作所述主处理单元来确定在将与给定子处理单元共享处理结果的一个或多个子处理单元和可以被重新分配有处理器任务的一个或多个参予子处理单元之间可能存在的、包括通讯带宽和通讯延迟中至少一个的通讯成本。
66.根据权利要求65所述的设备,其中还可以操作所述主处理单元以根据通讯成本和通讯要求的比较来进行给定子处理单元的任务的重新分配。
67.根据权利要求65所述的设备,其中所述通讯要求和通讯成本至少包括下面之一:
(i)在共同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(ii)在不同电路板上的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(iii)在共同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(iv)在不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;
(v)在共同位置处的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟;和
(vi)在每个都处于不同位置的不同产品中的两个子处理单元之间的一个或多个数据通讯接口的带宽和/或延迟。
68.根据权利要求67所述的设备,其中在两个子处理单元之间的一个或多个数据通讯接口至少包括下面之一:(i)内部子处理单元输入/输出总线接口;(ii)子处理单元之间输入/输出总线接口;(iii)交换结构互连;(iv)网络接口卡;和(v)数据网络。
69.根据权利要求61所述的设备,还包括与多处理单元、独立多处理单元和分布多处理单元之中至少之一进行通讯的管理实体,所述管理实体包括表,该表至少包含下面之一:
(i)性能信息,指示参予子处理单元的处理器负荷;
(ii)位置信息,指示将参予子处理单元在多处理单元、独立多处理单元、和分布多处理单元之间进行放置的位置;和
(iii)通讯信息,指示在可以被重新分配有处理器任务的一个参予子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟中的至少一个。
70.根据权利要求69所述的设备,其中可以操作所述管理实体以响应于在参予子处理单元之间的通讯延迟、通讯带宽、位置、或处理器任务的处理器负荷中的任何变化来更新所述表。
71.根据权利要求69所述的设备,其中可以操作所述管理实体以使用所述表来确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。
72.根据权利要求71所述的设备,其中可以操作与给定子处理单元关联的主处理单元以发送询问给管理实体,所述询问至少包括下面之一:(i)给定子处理单元的处理器任务的处理器负荷;(ii)给定子处理单元的位置;和(iii)给定子处理单元的通讯要求。
73.根据权利要求72所述的设备,其中可以操作管理实体来将所述询问的通讯要求、位置、和处理器任务的处理器负荷中的至少一个与所述表的通讯信息、位置信息、和性能信息中的至少一个进行匹配,以确定应该将给定子处理单元的处理器任务重新分配给哪个参予子处理单元。
74.根据权利要求65所述的设备,还包括与多处理单元、独立多处理单元、分布多处理单元中的至少一个进行通讯的管理实体,所述管理实体包括表,该表至少包含下面之一:
(i)指示可以被租赁使用的参予子处理单元的处理能力、和指示这种参予子处理单元的处理器负荷的性能信息中至少一个的可用性信息;
(ii)指示使用可以被租赁的参予子处理单元的对应费用的费用信息;
(iii)指示可以被租赁的参予子处理单元被放置在多处理单元、独立多处理单元和分布多处理单元之中的位置的位置信息;和
(iv)指示在可以被重新分配有处理器任务的、用于租赁的一个参予子处理单元和将与给定处理单元共享处理结果的一个或多个子处理单元之间可能存在的通讯带宽和通讯延迟的通讯信息。
75.根据权利要求74所述的设备,其中可以操作所述管理实体以响应于用于租赁的参予子处理单元之间的可用性信息、费用信息、位置信息、或通讯信息之中的任何变化来更新所述表。
76.根据权利要求74所述的方法,其中可以操作所述管理实体以使用所述表来确定应该将给定子处理单元的处理器任务重新分配给哪个用于租赁的参予子处理单元。
77.根据权利要求76所述的方法,其中可以操作与给定子处理单元关联的主处理单元以从与给定子处理单元关联的主处理单元发送询问到管理实体,所述询问至少包括下面之一:(i)给定子处理单元的处理器负荷;(ii)给定子处理单元的位置;(iii)指示从一个或多个用于租赁的参予子处理单元租赁处理能力的可接受费用的租赁信息;和(iv)通讯要求。
78.根据权利要求77所述的方法,其中可以操作所述管理实体以将询问的处理器负荷、可接受费用、位置和通讯要求中的至少一个与所述表的可用性信息、费用信息、位置信息、和通讯信息中的至少一个进行匹配,以确定应该将给定子处理单元的处理器任务重新分配给哪个用于租赁的参予子处理单元。
79.根据权利要求78所述的设备,其中当被重新分配有给定子处理单元的处理器任务时,所述用于租赁的参予子处理单元与可以收集对其使用的费用的一个或多个实体关联。
80.根据权利要求77所述的方法,其中可以操作所述管理实体以将询问的处理器负荷、可接受费用、位置、和通讯要求与所述表的可用性信息、费用信息、位置信息、和通讯信息进行匹配,从而可以将给定子处理单元的处理器任务重新分配给用于租赁的、具有最低费用的一个或多个参予子处理单元。
81.根据权利要求80所述的设备,其中当被重新分配有给定子处理单元的处理器任务时,所述用于租赁的参予子处理单元与可以收集对其使用的费用的一个或多个实体关联。
82.根据权利要求65所述的设备,其中:
还可以操作与给定子处理单元关联的主处理单元以发送要求响应的一个或多个请求到一个或多个参予子处理单元;
操作要求响应的一个或多个请求以积累通讯信息,所述通讯信息指示当对应的要求响应的请求从主处理单元传播到一个或多个参予子处理单元时,与所述对应的要求响应的请求所遇到的任何通讯接口关联的通讯延迟和通讯带宽中的至少一个;
还可以操作所述主处理单元以至少计算对在将与给定子处理单元共享处理结果的一个或多个子处理单元和根据所积累的通讯信息可以被重新分配有处理器任务的一个或多个参予子处理单元之间可能存在的通讯成本的估计。
83.根据权利要求82所述的设备,其中要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元可以包括给定子处理单元。
84.根据权利要求82所述的设备,其中要求响应的一个或多个请求是能够通过通讯网络传输的网络数据分组的形式。
85.根据权利要求84所述的设备,其中所述通讯网络至少是因特网和与其进行通讯的任何其他网络之一。
86.根据权利要求82所述的设备,还可以操作所述主处理单元以:
从一个或多个参予子处理单元接收一个或多个响应;和
将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
87.根据权利要求86所述的设备,其中一个或多个响应是能够通过通讯网络传输的网络数据分组的形式。
88.根据权利要求87所述的设备,其中所述通讯网络至少可以是因特网和与其链接的任何其他网络之一。
89.根据权利要求86所述的设备,其中:
还可以操作所述主处理单元以计算从给定子处理单元到响应了要求响应的请求的一个或多个参予子处理单元的上行链路数据路径的通讯成本;并且
这种计算至少包括下面之一:
(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;和
(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽。
90.根据权利要求89所述的设备,其中还可以操作所述主处理单元以根据对于每个上行链路数据路径的合计上行链路通讯延迟和最低通讯带宽中的至少一个与通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
91.根据权利要求86所述的设备,其中:
操作一个或多个响应以积累进一步的通讯信息,所述进一步的通讯信息指示当对应的响应从一个或多个参予子处理单元传播到主处理单元时与所述响应所遇到的任何通讯接口关联的通讯延迟和通讯带宽之中至少一个;和
还可以操作所述主处理单元以根据所积累的通讯信息和所积累的进一步通讯信息来计算通讯成本。
92.根据权利要求91所述的设备,其中每个响应既包括积累的通讯信息又包括对应的积累的进一步通讯信息,从而所述积累的通讯信息和所述积累的进一步的通讯信息对于发布了一个或多个要求响应的请求的主处理单元是可用的。
93.根据权利要求91所述的设备,其中:
还可以操作所述主处理单元以计算给定子处理单元和响应了要求响应的请求的一个或多个参予子处理单元之间的上行链路数据路径和下行链路数据路径的通讯成本;和
所述计算至少包括下面之一:
(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;
(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元时与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽;
(iii)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元传播到主处理单元时与所述响应所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个下行链路数据路径的合计下行链路通讯延迟;和
(iv)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元传播到主处理单元时与所述响应所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个下行链路数据路径的最低的通讯带宽。
94.根据权利要求93所述的设备,其中:还可以操作所述主处理单元以根据对于每个上行链路数据路径的合计上行链路通讯延迟、对于每个下行链路数据路径的合计下行链路通讯延迟、对于每个上行链路数据路径的最低通讯带宽、和对于每个下行链路数据路径的最低通讯带宽之中至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
95.根据权利要求86所述的设备,其中:
还可以操作主处理单元以将要求响应的一个或多个请求发布给要与给定子处理单元共享处理结果的一个或多个子处理单元;
操作要求响应的每个请求以积累指示在对应的要求响应的请求从主处理单元传播到将与给定子处理单元共享处理结果的一个或多个子处理单元时,与所述请求所遇到的任何通讯接口关联的通讯延迟和通讯带宽之中至少一个的进一步的通讯信息;和
还可以操作所述主处理单元以根据所积累的通讯信息和所积累的进一步通讯信息之间的任何差异来计算通讯成本。
96.根据权利要求95所述的设备,其中:
还可以操作所述主处理单元以计算在给定子处理单元和响应了要求响应的请求的一个或多个参予子处理单元之间、以及在给定子处理单元和将与给定子处理单元共享处理结果的一个或多个子处理单元之间的上行链路数据路径和下行链路数据路径的通讯成本,
这种计算至少包括下面之一:
(i)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元、和/或到将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个上行链路数据路径的合计上行链路通讯延迟;
(ii)对于每个上行链路数据路径,将当用于每个上行链路数据路径的、要求响应的请求从主处理单元传播到对应的一个参予子处理单元、和/或到将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元时,与所述请求所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个上行链路数据路径的最低的通讯带宽;
(iii)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元、和/或从将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯延迟相加,从而获得对于每个下行链路数据路径的合计下行链路通讯延迟;和
(iv)对于每个下行链路数据路径,将当用于每个下行链路数据路径的响应从对应的一个参予子处理单元、和/或从将要接收给定子处理单元的处理器任务的结果的一个或多个子处理单元传播到主处理单元时,与所述响应所遇到的各个通讯接口关联的通讯带宽进行比较,从而获得对于每个下行链路数据路径的最低的通讯带宽。
97.根据权利要求96所述的设备,其中:还可以操作所述主处理单元以根据对于每个上行链路数据路径的合计上行链路通讯延迟、对于每个下行链路数据路径的合计下行链路通讯延迟、对于每个上行链路数据路径的最低通讯带宽、和对于每个下行链路数据路径的最低通讯带宽之中至少一个和通讯要求的比较,将给定子处理单元的处理器任务重新分配给响应了要求响应的请求的一个或多个参予子处理单元。
98.根据权利要求86所述的设备,其中:
还可以操作所述主处理单元以发送预留请求到与给定子处理单元和将要被重新分配有给定子处理单元的处理器任务的一个或多个参予子处理单元之间的通讯总线关联的一个或多个总线仲裁器;和
所述预留请求使得一个或多个总线仲裁器为至少下面目的之一预留通讯带宽:(i)执行重新分配的处理器任务;和(ii)将处理器任务的结果发送到要接收这种结果的一个或多个其他子处理单元。
99.根据权利要求98所述的设备,其中:
还可以操作所述主处理单元以发送预留清除请求到一个或多个总线仲裁器;和
所述预留清除请求使得一个或多个总线仲裁器清除对通讯带宽的预留。
100.根据权利要求86所述的设备,其中所述响应至少包括积累的信息、和指示发出响应的参予子处理单元的对应处理器负荷的性能信息之中的一个。
101.根据权利要求100所述的设备,其中:还可以操作所述主处理单元以根据发出响应的参予子处理单元的对应处理器负荷与给定子处理单元的处理器任务的处理器负荷的比较、通讯要求、积累的信息,选择一个或多个参予子处理单元用于给定子处理单元的处理器任务的重新分配。
CN2005800017410A 2004-05-19 2005-05-18 用于在多处理器系统中处置处理错误的方法和设备 Expired - Fee Related CN1906586B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/849,623 US7730456B2 (en) 2004-05-19 2004-05-19 Methods and apparatus for handling processing errors in a multi-processing system
US10/849,623 2004-05-19
PCT/JP2005/009484 WO2005111799A1 (en) 2004-05-19 2005-05-18 Methods and apparatus for handling processing errors in a multi-processor system

Publications (2)

Publication Number Publication Date
CN1906586A true CN1906586A (zh) 2007-01-31
CN1906586B CN1906586B (zh) 2010-05-05

Family

ID=35394319

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2005800017410A Expired - Fee Related CN1906586B (zh) 2004-05-19 2005-05-18 用于在多处理器系统中处置处理错误的方法和设备

Country Status (8)

Country Link
US (2) US7730456B2 (zh)
EP (1) EP1639463A4 (zh)
JP (1) JP4255457B2 (zh)
KR (1) KR100832192B1 (zh)
CN (1) CN1906586B (zh)
AU (1) AU2005242881A1 (zh)
CA (1) CA2530942C (zh)
WO (1) WO2005111799A1 (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102972011A (zh) * 2012-04-01 2013-03-13 华为技术有限公司 媒体处理系统和处理媒体业务的方法
CN103222233A (zh) * 2010-11-23 2013-07-24 国际商业机器公司 基于网络接口层的可靠度的最佳路径评估
CN106687930A (zh) * 2014-09-16 2017-05-17 混合型服务器技术知识产权股份有限公司 用于决定任务分发路径的方法、设备和系统
CN107111886A (zh) * 2014-09-23 2017-08-29 三星电子株式会社 用于处理医学图像的装置及其处理医学图像的方法
CN110083494A (zh) * 2011-12-30 2019-08-02 英特尔公司 在多核心环境中管理硬件错误的方法和装置

Families Citing this family (50)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8769495B1 (en) * 2005-09-30 2014-07-01 Sony Computer Entertainment Inc. Systems and methods for debugging in a multiprocessor environment
US8701091B1 (en) 2005-12-15 2014-04-15 Nvidia Corporation Method and system for providing a generic console interface for a graphics application
US8452981B1 (en) * 2006-03-01 2013-05-28 Nvidia Corporation Method for author verification and software authorization
US7891012B1 (en) 2006-03-01 2011-02-15 Nvidia Corporation Method and computer-usable medium for determining the authorization status of software
US8436870B1 (en) 2006-08-01 2013-05-07 Nvidia Corporation User interface and method for graphical processing analysis
US8436864B2 (en) * 2006-08-01 2013-05-07 Nvidia Corporation Method and user interface for enhanced graphical operation organization
US8607151B2 (en) * 2006-08-01 2013-12-10 Nvidia Corporation Method and system for debugging a graphics pipeline subunit
US8963932B1 (en) * 2006-08-01 2015-02-24 Nvidia Corporation Method and apparatus for visualizing component workloads in a unified shader GPU architecture
US7778800B2 (en) * 2006-08-01 2010-08-17 Nvidia Corporation Method and system for calculating performance parameters for a processor
TW200832128A (en) * 2007-01-26 2008-08-01 Rdc Semiconductor Co Ltd Redundant system
US8296738B1 (en) 2007-08-13 2012-10-23 Nvidia Corporation Methods and systems for in-place shader debugging and performance tuning
US9035957B1 (en) 2007-08-15 2015-05-19 Nvidia Corporation Pipeline debug statistics system and method
US7765500B2 (en) * 2007-11-08 2010-07-27 Nvidia Corporation Automated generation of theoretical performance analysis based upon workload and design configuration
US8448002B2 (en) * 2008-04-10 2013-05-21 Nvidia Corporation Clock-gated series-coupled data processing modules
US8341638B2 (en) * 2008-09-30 2012-12-25 International Business Machines Corporation Delegated virtualization across physical partitions of a multi-core processor (MCP)
US8438404B2 (en) * 2008-09-30 2013-05-07 International Business Machines Corporation Main processing element for delegating virtualized control threads controlling clock speed and power consumption to groups of sub-processing elements in a system such that a group of sub-processing elements can be designated as pseudo main processing element
US8732716B2 (en) 2008-09-30 2014-05-20 International Business Machines Corporation Virtualization across physical partitions of a multi-core processor (MCP)
JP5169731B2 (ja) * 2008-10-24 2013-03-27 富士通セミコンダクター株式会社 マルチプロセッサシステムlsi
WO2010058241A1 (en) * 2008-11-24 2010-05-27 Abb Research Ltd. A system and a method for providing control and automation services
CN101859330B (zh) * 2009-04-09 2012-11-21 辉达公司 验证集成电路效能模型的方法
US20120317442A1 (en) * 2010-01-15 2012-12-13 Hitachi, Ltd. Embedded device and embedded system
US8714472B2 (en) 2010-03-30 2014-05-06 Kimberly-Clark Worldwide, Inc. Winder registration and inspection system
US8364290B2 (en) 2010-03-30 2013-01-29 Kimberly-Clark Worldwide, Inc. Asynchronous control of machine motion
KR101850273B1 (ko) * 2011-12-20 2018-04-20 에스프린팅솔루션 주식회사 화상형성장치 및 화상형성장치에서 에러 알림 및 복구 기능을 수행하는 방법
US20130219386A1 (en) * 2012-02-21 2013-08-22 Disney Enterprises, Inc. Dynamic allocation of compute resources
US9323315B2 (en) 2012-08-15 2016-04-26 Nvidia Corporation Method and system for automatic clock-gating of a clock grid at a clock source
US8850371B2 (en) 2012-09-14 2014-09-30 Nvidia Corporation Enhanced clock gating in retimed modules
US9519568B2 (en) 2012-12-31 2016-12-13 Nvidia Corporation System and method for debugging an executing general-purpose computing on graphics processing units (GPGPU) application
US9471456B2 (en) * 2013-05-15 2016-10-18 Nvidia Corporation Interleaved instruction debugger
US20150227586A1 (en) * 2014-02-07 2015-08-13 Futurewei Technologies, Inc. Methods and Systems for Dynamically Allocating Resources and Tasks Among Database Work Agents in an SMP Environment
US9785469B2 (en) * 2014-02-07 2017-10-10 International Business Machines Corporation Detection of time points to voluntarily yield resources for context switching
US9665372B2 (en) 2014-05-12 2017-05-30 International Business Machines Corporation Parallel slice processor with dynamic instruction stream mapping
US9672043B2 (en) * 2014-05-12 2017-06-06 International Business Machines Corporation Processing of multiple instruction streams in a parallel slice processor
US9760375B2 (en) 2014-09-09 2017-09-12 International Business Machines Corporation Register files for storing data operated on by instructions of multiple widths
US9720696B2 (en) 2014-09-30 2017-08-01 International Business Machines Corporation Independent mapping of threads
US9977678B2 (en) 2015-01-12 2018-05-22 International Business Machines Corporation Reconfigurable parallel execution and load-store slice processor
US10133576B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Parallel slice processor having a recirculating load-store queue for fast deallocation of issue queue entries
US10133581B2 (en) 2015-01-13 2018-11-20 International Business Machines Corporation Linkable issue queue parallel execution slice for a processor
US10248487B1 (en) * 2015-01-27 2019-04-02 Violin Systems Llc Error recovery for multi-stage simultaneously running tasks
US9983875B2 (en) 2016-03-04 2018-05-29 International Business Machines Corporation Operation of a multi-slice processor preventing early dependent instruction wakeup
US10037211B2 (en) 2016-03-22 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor with an expanded merge fetching queue
US10346174B2 (en) 2016-03-24 2019-07-09 International Business Machines Corporation Operation of a multi-slice processor with dynamic canceling of partial loads
US10761854B2 (en) 2016-04-19 2020-09-01 International Business Machines Corporation Preventing hazard flushes in an instruction sequencing unit of a multi-slice processor
US10037229B2 (en) 2016-05-11 2018-07-31 International Business Machines Corporation Operation of a multi-slice processor implementing a load/store unit maintaining rejected instructions
US9934033B2 (en) 2016-06-13 2018-04-03 International Business Machines Corporation Operation of a multi-slice processor implementing simultaneous two-target loads and stores
US10042647B2 (en) 2016-06-27 2018-08-07 International Business Machines Corporation Managing a divided load reorder queue
US10318419B2 (en) 2016-08-08 2019-06-11 International Business Machines Corporation Flush avoidance in a load store unit
US10623240B2 (en) * 2016-08-25 2020-04-14 Intel Corporation IoT solution sizing
US11669901B2 (en) 2019-07-12 2023-06-06 Core Scientific Operating Company Communication network for gaming rewards
US11485241B2 (en) 2019-10-21 2022-11-01 Core Scientific, Inc. Efficient computing in vehicles

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2607680B2 (ja) 1989-05-09 1997-05-07 三菱重工業株式会社 電気集じん装置およびその運転方法
CA2078315A1 (en) * 1991-09-20 1993-03-21 Christopher L. Reeve Parallel processing apparatus and method for utilizing tiling
US5838894A (en) * 1992-12-17 1998-11-17 Tandem Computers Incorporated Logical, fail-functional, dual central processor units formed from three processor units
GB9305263D0 (en) * 1993-03-15 1993-05-05 Univ Westminster Parrallel computation
US5867712A (en) * 1993-04-05 1999-02-02 Shaw; Venson M. Single chip integrated circuit system architecture for document instruction set computing
JPH09293059A (ja) * 1996-04-25 1997-11-11 Hitachi Ltd 分散システム及びその運用管理方法
US6016395A (en) * 1996-10-18 2000-01-18 Samsung Electronics Co., Ltd. Programming a vector processor and parallel programming of an asymmetric dual multiprocessor comprised of a vector processor and a risc processor
US6298370B1 (en) * 1997-04-04 2001-10-02 Texas Instruments Incorporated Computer operating process allocating tasks between first and second processors at run time based upon current processor load
US6115795A (en) * 1997-08-06 2000-09-05 International Business Machines Corporation Method and apparatus for configurable multiple level cache with coherency in a multiprocessor system
US6256775B1 (en) * 1997-12-11 2001-07-03 International Business Machines Corporation Facilities for detailed software performance analysis in a multithreaded processor
US6266804B1 (en) * 1997-12-23 2001-07-24 Ab Initio Software Corporation Method for analyzing capacity of parallel processing systems
US6141762A (en) * 1998-08-03 2000-10-31 Nicol; Christopher J. Power reduction in a multiprocessor digital signal processor based on processor load
US6381735B1 (en) * 1998-10-02 2002-04-30 Microsoft Corporation Dynamic classification of sections of software
WO2000067157A2 (en) * 1999-04-30 2000-11-09 Imagex.Com, Inc. Method for configuring an application server system
US6560606B1 (en) * 1999-05-04 2003-05-06 Metratech Method and apparatus for processing data with multiple processing modules and associated counters
US7086035B1 (en) * 1999-05-13 2006-08-01 International Business Machines Corporation Method and system for counting non-speculative events in a speculative processor
US6467052B1 (en) * 1999-06-03 2002-10-15 Microsoft Corporation Method and apparatus for analyzing performance of data processing system
US6718486B1 (en) 2000-01-26 2004-04-06 David E. Lovejoy Fault monitor for restarting failed instances of the fault monitor
US6772322B1 (en) * 2000-01-21 2004-08-03 Intel Corporation Method and apparatus to monitor the performance of a processor
JP3496822B2 (ja) 2000-04-19 2004-02-16 日本電気株式会社 コンピュータシステムにおける障害対処方式
US6728897B1 (en) * 2000-07-25 2004-04-27 Network Appliance, Inc. Negotiating takeover in high availability cluster
US20020165819A1 (en) 2001-05-02 2002-11-07 Gateway, Inc. System and method for providing distributed computing services
US8473922B2 (en) * 2001-09-19 2013-06-25 Hewlett-Packard Development Company, L.P. Runtime monitoring in component-based systems
US7668966B2 (en) 2001-11-02 2010-02-23 Internap Network Services Corporation Data network controller
US7065549B2 (en) * 2002-03-29 2006-06-20 Illinois Institute Of Technology Communication and process migration protocols for distributed heterogeneous computing
JP3932994B2 (ja) * 2002-06-25 2007-06-20 株式会社日立製作所 サーバ引継システムおよびその方法
US20050060590A1 (en) * 2003-09-16 2005-03-17 International Business Machines Corporation Power-aware workload balancing usig virtual machines
US7293260B1 (en) * 2003-09-26 2007-11-06 Sun Microsystems, Inc. Configuring methods that are likely to be executed for instrument-based profiling at application run-time
KR100570836B1 (ko) * 2003-10-14 2006-04-13 한국전자통신연구원 부하 분산 세션 레이블을 이용한 서버간의 부하 분산장치 및 방법
US7676637B2 (en) * 2004-04-27 2010-03-09 International Business Machines Corporation Location-aware cache-to-cache transfers
US7437536B2 (en) * 2004-05-03 2008-10-14 Sony Computer Entertainment Inc. Systems and methods for task migration

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103222233A (zh) * 2010-11-23 2013-07-24 国际商业机器公司 基于网络接口层的可靠度的最佳路径评估
CN103222233B (zh) * 2010-11-23 2015-09-09 国际商业机器公司 一种节点动态错误抑制的方法、装置和系统
CN110083494A (zh) * 2011-12-30 2019-08-02 英特尔公司 在多核心环境中管理硬件错误的方法和装置
CN110083494B (zh) * 2011-12-30 2023-07-25 英特尔公司 在多核心环境中管理硬件错误的方法和装置
CN102972011A (zh) * 2012-04-01 2013-03-13 华为技术有限公司 媒体处理系统和处理媒体业务的方法
CN102972011B (zh) * 2012-04-01 2015-07-08 华为技术有限公司 媒体处理系统和处理媒体业务的方法
CN106687930A (zh) * 2014-09-16 2017-05-17 混合型服务器技术知识产权股份有限公司 用于决定任务分发路径的方法、设备和系统
CN107111886A (zh) * 2014-09-23 2017-08-29 三星电子株式会社 用于处理医学图像的装置及其处理医学图像的方法

Also Published As

Publication number Publication date
US20050273652A1 (en) 2005-12-08
US7730456B2 (en) 2010-06-01
WO2005111799A1 (en) 2005-11-24
CN1906586B (zh) 2010-05-05
KR20060096109A (ko) 2006-09-06
EP1639463A4 (en) 2011-01-26
US7926023B2 (en) 2011-04-12
CA2530942C (en) 2011-12-06
JP2005332402A (ja) 2005-12-02
JP4255457B2 (ja) 2009-04-15
CA2530942A1 (en) 2005-11-24
KR100832192B1 (ko) 2008-05-23
US20080098260A1 (en) 2008-04-24
EP1639463A1 (en) 2006-03-29
AU2005242881A1 (en) 2005-11-24

Similar Documents

Publication Publication Date Title
CN1906586A (zh) 用于在多处理器系统中处置处理错误的方法和设备
CN1279469C (zh) 一种处理器中处理数据的方法和处理数据的系统
CN1114859C (zh) 数据共享方法和计算机体系结构
CN1279470C (zh) 宽带网络计算机体系结构的计算机处理器和处理设备
CN1137439C (zh) 容错计算机系统
WO2017128507A1 (zh) 一种去中心化资源调度方法及系统
CN1264078A (zh) 执行多个操作系统的计算机
CN1653425A (zh) 在逻辑分区数据处理系统中动态分配和解除分配处理器的方法和装置
CN101040268A (zh) 宽带网络计算机体系结构中的外部数据接口
CN1496511A (zh) 宽带网络计算机体系结构的存储器保护系统和方法
CN1521625A (zh) 容错计算机系统,其再同步方法,及其再同步程序
US7366814B2 (en) Heterogeneous multiprocessor system and OS configuration method thereof
CN1496516A (zh) 宽带网络计算机体系结构的资源专用系统和方法
CN1993670A (zh) 信息处理装置
CN1494690A (zh) 用于宽带网络的计算机体系结构和软件单元
CN1802635A (zh) 资源管理方法以及设备
CN101031886A (zh) 网络系统、管理计算机、集群管理方法以及计算机程序
CN1906598A (zh) 信息处理设备、存储区管理方法和计算机程序
CN1315045C (zh) 一种对机群实现集中并发管理的方法
CN1591339A (zh) 提供共享Web模块的系统和方法
US20090319662A1 (en) Process Migration Based on Exception Handling in a Multi-Node Environment
CN1928832A (zh) 多处理计算系统中的状态跟踪和恢复方法和系统
CN100340978C (zh) 组件处理系统和组件处理方法
CN1928828A (zh) 用于执行恢复的方法和系统
Ashraf et al. Improving Performance In Hpc System Under Power Consumptions Limitations

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
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20100505

Termination date: 20130518