CN103699512B - 多线程处理器中的内核间线程备用 - Google Patents

多线程处理器中的内核间线程备用 Download PDF

Info

Publication number
CN103699512B
CN103699512B CN201310446803.5A CN201310446803A CN103699512B CN 103699512 B CN103699512 B CN 103699512B CN 201310446803 A CN201310446803 A CN 201310446803A CN 103699512 B CN103699512 B CN 103699512B
Authority
CN
China
Prior art keywords
kernel
thread
processor
last time
architecture states
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.)
Active
Application number
CN201310446803.5A
Other languages
English (en)
Other versions
CN103699512A (zh
Inventor
F.Y.布萨巴
S.R.卡洛
C.A.克里格罗夫斯基
B.R.普拉斯基
岑中龙
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of CN103699512A publication Critical patent/CN103699512A/zh
Application granted granted Critical
Publication of CN103699512B publication Critical patent/CN103699512B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0715Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a system implementing multitasking
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/0721Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU]
    • G06F11/0724Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment within a central processing unit [CPU] in a multiprocessor or a multi-core unit
    • 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/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/076Error or fault detection not based on redundancy by exceeding limits by exceeding a count or rate limit, e.g. word- or bit count limit
    • 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/1658Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
    • 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/2025Failover techniques using centralised failover control functionality
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)
  • Retry When Errors Occur (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本公开涉及用于处理器中的内核之间的线程备用的系统、方法和计算机程序产品。所述方法包括:由处理器的第一内核确定第一内核的第一线程做出的恢复尝试的数目已超过了恢复尝试阈值;第一内核向处理器中的处理器控制器发送用来将第一线程转移到处理器的另一个内核的请求;基于接收到所述请求,处理器控制器从处理器的多个内核中选择第二内核来从第一内核接收第一线程,其中基于第二内核具有空闲线程来选择第二内核;将第一线程的上次良好架构状态从第一内核的错误恢复逻辑传送到第二内核;由第二内核的空闲线程加载第一线程的上次良好架构状态;由空闲线程在第二内核上从第一线程的上次良好架构状态恢复第一线程的执行。

Description

多线程处理器中的内核间线程备用
技术领域
本发明一般涉及多线程处理器中的错误恢复,更具体地,涉及被配置为在内核间备用(spare)线程的多线程多内核(core)处理器。
背景技术
处理器可被配置为一次执行指令的一个线程、或同时执行多个线程。被配置为同时执行多个线程的处理器被称为处于同时多线程(SMT)模式。在SMT模式中,在机器上执行的多个软件线程之间共享硬件资源。典型地,线程存在于进程内,并且,进程可具有共享诸如存储器的计算机资源的多个线程。线程被视为可由操作系统调度的最小的处理单元。在正在执行多线程的多内核处理器中,可跨越处理器中的多内核分布线程,并且,每个内核可被配置为同时执行多个线程。每个线程呈现为具有其自身的完整的架构硬件集合。
可能在SMT处理器上执行线程的期间出现硬件错误,并且,当未被检测到时,硬件错误可能威胁数据完整性(integrity)。基于软件的错误恢复技术可被用来解决这样的错误;然而,基于软件的错误恢复可能相对较慢,例如,需要来自计算系统中的管理程序代码的干预。为了避免在基于软件的错误恢复中可能出现的延迟,可采用硬件恢复,来在处理器检测到错误时将处理器恢复到已知的良好或安全。在可能持续数千个处理器周期的硬件恢复处理期间,处理器停止执行其中出现错误的指令流,清除内部破坏状态,将自身恢复到已知的无错误状态,并从指令流上次中止的点(其可为已知的良好状态或硬件检查点状态)重启指令流的处理。在硬件恢复处理期间,当清除破坏状态以及恢复已知的良好状态时程序流被中断;然而,在处理器上执行的任何软件应用未被涉及在硬件恢复处理中。在正在SMT模式中运行的多内核处理器上,尽管错误可被隔离到单个线程,但从检测到的错误的硬件恢复可能需要将恢复处理应用于正在出现错误的内核上运行的所有线程。当同一内核上的重复的恢复动作不能解决错误时,由于假定有故障的内核具有不可校正的错误,所以硬件恢复处理可能例如包括将有故障的内核的完整状态备用到另一个内核。这样的完整内核备用可能破坏正在有故障的内核上成功执行的一个或多个线程的进展。
发明内容
实施例包括用于在处理器中的内核之间进行线程备用的系统、方法和计算机程序产品。一个方面包括:由处理器的第一内核确定第一内核上的第一线程做出的恢复尝试的数目已超过了恢复尝试阈值。另一方面包括:第一内核向处理器中的处理器控制器发送用来将第一线程转移到处理器的另一个内核的请求。另一方面包括:基于接收到所述请求,处理器控制器从处理器的多个内核中选择第二内核来从第一内核接收第一线程,其中,基于第二内核具有空闲线程来选择第二内核。另一方面包括:将第一线程的上次良好架构状态从第一内核的错误恢复逻辑传送到第二内核。另一方面包括:由第二内核上的空闲线程加载第一线程的上次良好架构状态。再一方面包括:由空闲线程,在第二内核上从第一线程的上次良好架构状态恢复第一线程的执行。
附图说明
在说明书所附的权利要求中具体指出并分别要求了被视为实施例的主题内容。从下面结合附图的详细描述中,实施例的前述和其他特征、优点变得清楚,附图中:
图1A绘出了根据实施例的用于多线程处理器中的内核之间的线程备用的计算系统;
图1B绘出了根据另一实施例的用于多线程处理器中的内核之间的线程备用的计算系统;
图2绘出了根据实施例的第一和第二内核;
图3绘出了根据实施例的用于多线程处理器中的内核之间的线程备用的处理流;以及
图4示出了根据实施例的计算机程序产品。
具体实施方式
通过下面详细讨论的示例性实施例来提供用于多线程处理器中的内核之间的线程备用的系统和方法的实施例。基于硬件的线程备用可被用来将单个失败的线程从多线程多内核处理器中的第一内核转移到第二内核,而不影响在第一内核上运行的其它线程。可基于在线程执行期间出现的恢复尝试的数目超过恢复尝试阈值,来确定线程已失败。当确定线程已在第一内核上失败、且需要转移失败的线程时,将失败的线程的上次良好架构状态(architectedstate)从第一内核中的错误恢复逻辑转移到第二内核,并且,可使用第二内核中的空闲线程的资源,来从失败线程的上次良好架构状态恢复失败线程的执行。在一些实施例中,可使用第一内核上的良好线程的资源来将失败线程的上次良好架构状态转移到第二内核。
多线程多内核处理器中的内核可各自具有该内核支持的、预定最大数目的同时线程(例如,8至16个线程)。直到预定最大数目的线程,可能存在在内核中指定的用于每个线程的硬件资源。如果内核当前正在执行小于此预定最大数目的个数的线程,则内核具有一个或多个当前空闲的线程,并且,被指定用于一个或多个当前空闲的线程的资源可用于接管失败线程的执行。在一些实施例中,第一内核可为部分损坏的内核,其能够在转移失败线程之后继续执行一个或多个线程,并且,第二内核可为具有可用于接管失败线程的执行的当前空闲线程的内核。在其它实施例中,第一内核可包括完全损坏的内核,并且,可能需要将来自第一内核的所有线程备用到处理器中的其它内核。在这样的实施例中,可跨越处理器中的多个内核分布来自第一内核的线程。处理器控制器可确定处理器中的一个或多个内核具有当前空闲的线程,并且可将来自完全损坏的第一内核的线程转移到一个或多个内核,以使用识别出的当前空闲线程来恢复执行。在第一内核由部分损坏的内核构成的其它实施例中,在确定需要将线程转移到另一个内核之前,第一内核可尝试使用部分损坏的内核上的当前空闲线程的资源来恢复失败线程的执行。
例如,在一些实施例中,第一内核上的线程可能例如由于内核上的有故障的硬件而失败,其导致单个不可恢复的事件,该事件引起线程的多个恢复尝试。在其它实施例中,可能由于在线程的执行期间发生的多个不可恢复的错误以及关联的恢复尝试而缺少线程的前进进展(forward progress)。当在线程的执行期间进行的恢复尝试的数目超过了第一内核中的错误恢复逻辑中定义的恢复尝试阈值时,确定该线程已失败。单个不可恢复的错误包括不能被恢复动作修复或校正的错误。例如,处理器的信号之一或锁存输出的固定故障(stuck-at fault)可导致不可恢复的错误。如果锁存输出固定在“1”,则该输出呈现为被绑定为“1”,且即使在多次恢复尝试之后也不能被覆写为“0”。可恢复错误的示例包括位翻转,线程执行期间的多次位翻转和恢复可导致确定该线程已失败。
当确定线程已失败时,首先通过清除属于失败的线程的流水线中的任何指令、阻止失败的线程进行指令取出、并将该线程的任何存储数据发送到处理器中的更高层(level)的存储器(其中可根据系统中运行的其他运行线程的需要来使用存储数据),来从第一内核上的其它线程保护(fence)该线程。一旦保护了失败的线程,则可将失败的线程从第一内核转移到第二内核。通过传送失败线程的上次良好架构状态、并使用第二内核上的空闲线程的资源从上次良好架构状态恢复执行,来转移失败的线程。线程的上次良好架构状态包括在错误的事件中可将线程回卷到其的线程点,并可包括但不限于属于该线程的任何寄存器值或程序计数器。可在线程的指令每次到达检查点(checkpoint)(即,成功完成)时,更新线程的上次良好架构状态。将对于在内核上运行的所有线程的上次良好架构状态存储在内核的错误恢复逻辑中。可以任何适当方式,将失败线程的上次良好架构状态从第一内核传送到第二内核。在一些实施例中,可使用在一些实施例中在第一内核上运行的良好线程的资源,将失败线程的上次良好架构状态从第一内核传送到第二内核。例如,可使用良好线程的资源来注销(log out)失败线程的上次良好架构状态,并在处理器控制器中的本地处理器存储器中传送失败线程的上次良好架构状态。在其它实施例中,可经由链接多内核处理器中的内核的串行通信总线,来将失败线程的上次良好架构状态从第一内核传送到第二内核。
图1A和图1B中绘出了用于处理器中的内核之间的线程备用的计算系统的第一和第二实施例。图1A绘出了根据第一实施例的用于处理器中的内核之间的线程备用的计算系统100A。计算系统100A包括处理器101,其包括多内核SMT处理器。处理器101能够在每个内核103A-N上同时运行多个线程。处理器101包括处理器控制器102,其与多个内核103A-N的每个通信。处理器控制器102还包括线程目录106,其为在处理器101上运行的每个线程指示该线程所在的内核103A-N中的特定内核。处理器控制器102还包括处理器本地存储器107,其用于在处理器101中的内核103A-N之间收发信号(signaling)。诸如应用105的应用在计算系统100A上的主存储器104中运行。可由处理器101中的一个或多个线程执行应用105;可以任何适当方式,在内核103A-N之间分配这些线程。图1B绘出了根据第二实施例的用于处理器中的内核之间的线程备用的计算系统100B。如上面参照图1A所述,计算系统100B也包括处理器101、处理器控制器102、内核103A-N、主存储器104、应用105、以及线程目录106。计算系统100B还包括串行通信总线108,其用于在处理器101的内核103A-N之间收发信号。
图2绘出了根据实施例的第一内核201和第二内核207。第一内核201和第二内核207可各自包括在图1A-B的计算系统100A-B中示出的任意内核103A-N,并且,内核103A-N各自可包括在第一内核201和第二内核207中的每个中示出的元素。在各个实施例中,第一内核201和第二内核207可经由如图1A所示的处理器本地存储器107、或经由如图1B所示的串行通信总线108,彼此收发信号。第一内核201包括内核控制器202,其控制在第一内核201上运行的一个或多个线程对内核资源206的访问。例如,内核资源206可包括流水线和硬件寄存器。内核控制器202还包括错误恢复逻辑203,其存储在第一内核201上运行的所有线程的上次良好架构状态数据204。错误恢复逻辑203还在恢复尝试计数器和阈值逻辑205中,对在第一内核201上执行的每个线程维持各自的恢复尝试计数器。在恢复尝试计数器和阈值逻辑205中,每当在线程的执行期间进行恢复尝试时,便可递增用于该线程的恢复尝试计数器。随后,可将恢复尝试计数器与恢复尝试阈值比较,以确定该线程是否已失败。在一些实施例中,此恢复尝试阈值可基于第一内核201的状态而可变化。第二内核207也包括具有错误恢复逻辑209的相应内核控制器208、以及内核资源212,如关于第一内核201所讨论的。内核控制器208控制在第二内核207上执行的多个线程对内核资源212的访问。错误恢复逻辑209存储在第二内核207上运行的所有线程的上次良好架构状态数据210,并还包括恢复尝试计数器和阈值逻辑211。在第一内核201上的线程失败的事件中,可将单独线程从第一内核201转移到第二内核207,这将在下面参照图3进行说明。可在任意给定时刻,在第一内核201和第二内核207上运行适当数目的线程,最多至预定的最大数目的线程。
错误恢复逻辑203/209中的上次良好架构状态数据204/210用于在错误的事件中执行的恢复尝试,并给出可在错误的事件中将线程回卷到其的线程点。每当属于特定线程的指令到达第一内核201的内核资源206的流水线中的检查点(即,成功完成)时,上次良好架构状态数据204中的特定线程的上次良好架构状态被更新,以反映检查点事件。线程的上次良好架构状态可包括但不限于属于该线程的任何寄存器值或程序计数器。在第一内核201上的线程的执行期间的错误的事件中,错误恢复逻辑203使用在上次良好架构状态数据204中存储的该线程的上次良好架构状态来进行恢复尝试。恢复尝试可包括从第一内核201中的内核资源206中的流水线清除遇到错误的线程的任何指令,并且随后使用遇到该错误的线程的资源来加载该线程的上次良好架构状态并尝试从上次良好架构状态恢复该线程的执行。
图3示出了用于多线程处理器中的内核之间的线程备用的方法300的实施例的流程图。参照图1A、1B和图2来讨论方法300的流程。首先,在块301中,基于在第一内核(例如,第一内核103A/201)上的线程的执行期间已执行的恢复尝试的数目,确定该线程已失败以及该线程需要被转移到其它内核。可由第一内核103A/201上的错误恢复逻辑203确定该线程已失败且需要被转移到另一内核。在一些实施例中,可基于线程遇到单个不可恢复的错误并且从不可恢复的错误进行了多次恢复尝试,来确定线程失败。在其它实施例中,可在该线程的执行期间发生多个可恢复的错误以及关联的恢复尝试。在恢复尝试计数器和阈值逻辑205中,通过用于线程的恢复尝试计数器来跟踪在该线程的执行期间进行的恢复尝试的数目,并将其与在恢复尝试计数器和阈值逻辑205中定义的恢复尝试阈值相比较。当用于线程的恢复尝试计数器超过了恢复尝试阈值时,确定该线程已失败。在一些实施例中,恢复尝试计数器和阈值逻辑205维持的恢复尝试阈值可基于内核103A/201的状态而变化;例如,恢复尝试阈值的值可基于在第一内核103A/201上当前运行的线程的数目而变化。在恢复尝试期间,从流水线清除属于经历了错误的线程的指令,并将该线程的状态覆写为其上次良好架构状态。在同一内核上运行的很多线程的存在限制了可由恢复尝试清除和恢复的硬件和状态的数量,这是由于,用于单个线程的恢复尝试不影响内核上的其它良好线程的状态。因此,恢复尝试阈值可随着运行在该内核上的线程的数量的增加而增加,使得对于每个恢复尝试来说,存在清除流水线中的所有锁存器的更高机会。
一旦在块301期间确定线程失败,则确定该线程是否需要被转移到另一内核。在第一内核103A/201包括部分损坏的内核的一些实施例中,在确定有必要将该线程转移到另一内核之前,错误恢复逻辑203可尝试使用第一内核103A/201上的另一个当前空闲线程的资源来尝试从其上次良好架构状态恢复失败线程的执行。如果使用空闲线程来恢复失败线程的执行的此尝试不成功,或者,如果在第一内核103A/201上不存在当前可用的空闲线程,则错误恢复逻辑203可确定失败线程需要被转移到另一内核。否则,空闲线程可在第一内核103A/201上恢复失败线程的执行,并且,失败线程可能不需要被转移。除了失败线程之外,第一内核103A/201可具有任意适当数目的当前执行的附加线程。
接下来,在图3的块302中,第一内核103A/201中的内核控制器202将用来将失败线程转移到内核103B-N中的另一内核的请求发送到处理器控制器202。随后,流程前进到方法300的块303,其中,响应于线程转移请求,处理器控制器102确定内核103B-N中的具有可用于接管失败线程的执行的当前空闲线程的第二内核(例如,内核103B/207)。在一些实施例中,可基于列出在每个内核103A-N上执行的线程的线程目录106,来确定第二内核103B/207。在其它实施例中,处理器控制器102可对其他内核103B-N轮询,以确定具有空闲线程的任何内核。在一些实施例中,如果内核103B-N中的多个内核具有当前空闲线程,则在选择第二内核时,还可考虑第一内核103A/201和被确定为具有当前空闲线程的内核之间的转移距离,以便减小必须转移的失败线程所跨越的距离。可基于失败线程在从第一内核103A/201转移到第二内核103B/207期间将通过的跳数(例如,节点或内核的数目),来确定转移距离。除了空闲线程之外,第二内核103B/207还可具有任意适当数目的当前执行的线程。
现在,图3的方法300的流程前进到块304,其中,将失败线程的上次良好架构状态从第一内核103A/201的错误恢复逻辑203中的上次良好架构状态数据204传送到第二内核103B/207。参照图1A和图2来讨论方法300的块304的执行的第一实施例,并且,参照图1B和图2来讨论块304的执行的第二实施例。在块304的第一实施例中,经由处理器控制器102中的处理器本地存储器107来传送失败线程的上次良好架构状态。首先,先在第一内核103A/201上确定传送线程。传送线程包括当前在第一内核103A/201上运行的良好线程。在一些实施例中,可基于线程的相对优先级来选择传送线程;例如,可由内核控制器202将在第一内核103A/201上执行的线程中的低优先级的线程选择为传送线程。第一内核103A/201上的传送线程从错误恢复逻辑203中的上次良好架构状态数据204读出失败线程的上次良好架构状态,并将失败线程的上次良好架构状态传送到处理器控制器102的处理器本地存储器107。当传送线程完成了将失败线程的上次良好架构状态传送到处理器本地存储器107时,第一内核103A/201中的内核控制器202可向处理器控制器102用信号通知(signal)完成了失败线程的上次良好架构状态的传送。随后,处理器控制器102将失败线程的上次良好架构状态从处理器本地存储器107传送到第二内核103B/207。
在块304的执行的第二实施例中,第一内核103A/201上的内核控制器202经由第一内核103A/201中的串行通信总线接口将失败线程的上次良好架构状态从错误恢复逻辑203中的上次良好架构状态数据204传送到串行通信总线108,并且,串行通信总线108随后将失败线程的上次良好架构状态从第一内核103A/201传送到第二内核103B/207。在一些实施例中,取决于内核103A-N中的哪个内核是具有失败线程的内核、以及内核103A-N中的哪个内核被选择为从第一内核接收失败线程的第二内核,串行通信总线108可跨越内核103A-N中的多个内核将失败线程的上次良好架构状态从第一内核传送到第二内核。
现在,方法300的流程前进到块305,其中,第二内核103B/207接收失败线程的上次良好架构状态,并使用在方法300的块303中识别的空闲线程,加载接收到的上次良好架构状态。随后,该空闲线程使用内核资源212,从所接收的上次良好架构状态描述的点,在第二内核103B/207上恢复失败线程的执行。在一些实施例中,可在计算系统中提供特定指令(例如,“load-thread-state(加载线程状态)”指令),并将其用来使空闲线程加载失败线程的上次良好架构状态。还将所接收的上次良好架构状态存储在错误恢复逻辑209中的上次良好架构状态数据210中。最后,在方法300的块306中,处理器控制器102中的线程目录106被更新,以反映失败线程被从第一内核103A/201备用到第二内核103B/207。
在第一内核103A/201包括部分损坏的内核的一些实施例中,如在图3的方法300中所述,第一内核103A/201可在将失败线程转移到第二内核103B/207之后,继续执行一个或多个剩余线程。在第一内核103A/201是完全损坏的内核的一些实施例中,在第一内核103A/201上执行的所有线程可能都需要被转移到其它内核。在这样的实施例中,可跨越内核103B-N中具有当前空闲线程的不同内核,从完全损坏的内核分布线程。如在图3的方法300中所述,这可通过将第一内核103A/201上的每个线程的上次良好架构状态转移到内核103B-N中的其它内核来完成。
所属技术领域的技术人员知道,本发明的一个或多个方面可以实现为系统、方法或计算机程序产品。因此,本发明的一个或多个方面可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明的一个或多个方面还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
现在,参照图4,在一个示例中,计算机程序产品400包括例如一个或多个存储介质402,其中,该介质可为有形和/或非易失性的,用来在其上存储计算机可读程序代码装置或逻辑404,以提供和促进这里描述的实施例的一个或多个方面。
在有形介质(包括但不限于电子存储模块(RAM)、闪存、CD、DVD、磁带等)上创建和存储的程序代码经常被称为“计算机程序产品”。典型地,计算机程序产品介质可由优选在计算机系统中的处理电路读取,以由处理电路执行。例如,可使用编译器或汇编程序来创建这样的程序代码,以汇编在运行时执行本发明的方面的指令。
技术效果和益处包括跨越多线程多内核处理器中的内核备用失败线程,而不需要干扰其它线程的执行。
这里使用的术语仅用于描述特定实施例的目的,且不意欲限制实施例。如在这里使用的,单数形式的“一”、“一个”以及“该(the)”旨在也包括复数形式,除非上下文明确指定不包括。还应该理解,在本说明书中使用术语“包括”和/或“包含”,说明阐述的特征、数字、步骤、操作、元件和/或组件的出现,但不排除一个或多个其他特征、数字、步骤、操作、元件、组件和/或它们的组的出现或增加。
对应的结构、材料、动作和所有方法或步骤加上下面权利要求中的功能元件都旨在包括用于与其他权利要求的元件联合执行功能的任意结构、材料或动作,如权利要求中所明确的。本发明的说明已经为了列举和说明的目的呈现,而不是为了详尽或使本发明局限于公开的形式。在不脱离本发明的范围的情况下,本领域的一般技术人员可以做很多修改和变动。这里选择和说明的实施例是为了最好地解释本发明的原理和实际应用,以及使本领域其他一般技术人员能够理解本发明为适合特定的预期使用而具有多种修改的不同实施例。
可以以一种或多种程序设计语言或其组合来编写用于执行实施例的各个方面的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
上面参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了各实施例。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instruction means)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

Claims (13)

1.一种用于处理器中的内核之间的线程备用的计算机系统,所述系统包括:
所述处理器,所述处理器包括处理器控制器和与所述处理器控制器通信的多个内核,所述系统被配置为执行包括以下步骤的方法:
由所述处理器的所述多个内核的第一内核确定所述第一内核上的第一线程做出的恢复尝试的数目已超过了恢复尝试阈值;
由所述第一内核向所述处理器中的处理器控制器发送用于将所述第一线程转移到所述处理器的另一个内核的请求;
基于接收到所述请求,所述处理器控制器从所述处理器的所述多个内核中选择第二内核来从所述第一内核接收所述第一线程,其中,基于所述第二内核具有空闲线程来选择所述第二内核;
将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述第二内核;
由所述第二内核上的空闲线程加载所述第一线程的上次良好架构状态;以及
由所述空闲线程在所述第二内核上从所述第一线程的上次良好架构状态恢复所述第一线程的执行,
其中,将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述第二内核包括:
选择所述第一内核上的第二线程作为传送线程,其中,所述第二线程与所述第一线程不同;
通过所述传送线程,将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述处理器控制器的处理器本地存储器;以及
所述处理器控制器将所述第一线程的上次良好架构状态从所述处理器本地存储器传送到所述第二内核。
2.根据权利要求1所述的系统,其中,所述第一线程做出的恢复尝试是响应于单个不可恢复的错误而做出的。
3.根据权利要求1所述的系统,其中,所述第一线程做出的恢复尝试是响应于多个可恢复的错误而做出的。
4.根据权利要求1所述的系统,其中,所述恢复尝试阈值能够基于当前在所述第一内核上执行的线程的数目而变化。
5.根据权利要求1所述的系统,其中,基于所述第二线程的优先级来选择所述第二线程作为所述传送线程。
6.根据权利要求1所述的系统,其中,将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述第二内核包括:
所述第一内核将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述处理器的串行通信总线;以及
通过所述串行通信总线将所述第一线程的上次良好架构状态传送到所述第二内核。
7.根据权利要求1所述的系统,其中,还基于所述第一内核和所述第二内核之间的距离来选择所述第二内核以接收所述第一线程。
8.根据权利要求1所述的系统,其中,所述第二内核除了所述空闲线程之外还具有在所述第二内核上执行的一个或多个非空闲线程;并且所述方法还包括:在所述第二内核上恢复所述第一线程的执行之后,所述第一内核继续执行一个或多个其余线程。
9.一种用于处理器中的内核之间的线程备用的计算机实现的方法,所述方法包括:
由所述处理器的第一内核确定所述第一内核上的第一线程做出的恢复尝试的数目已超过了恢复尝试阈值;
由所述第一内核向所述处理器中的处理器控制器发送用于将所述第一线程转移到所述处理器的另一个内核的请求;
基于接收到所述请求,所述处理器控制器从所述处理器的多个内核中选择第二内核来从所述第一内核接收所述第一线程,其中,基于所述第二内核具有空闲线程来选择所述第二内核;
将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述第二内核;
由所述第二内核上的空闲线程加载所述第一线程的上次良好架构状态;以及
由所述空闲线程在所述第二内核上从所述第一线程的上次良好架构状态恢复所述第一线程的执行,
其中,将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述第二内核包括:
选择所述第一内核上的第二线程作为传送线程,其中,所述第二线程与所述第一线程不同;
通过传送线程,将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述处理器控制器的处理器本地存储器;以及
所述处理器控制器将所述第一线程的上次良好架构状态从所述处理器本地存储器传送到第二内核。
10.根据权利要求9所述的计算机实现的方法,其中,所述第一线程做出的恢复尝试是响应于单个不可恢复的错误而做出的。
11.根据权利要求9所述的计算机实现的方法,其中,所述第一线程做出的恢复尝试是响应于多个可恢复的错误而做出的。
12.根据权利要求9所述的计算机实现的方法,其中,基于所述第二线程的优先级来选择所述第二线程作为所述传送线程。
13.根据权利要求9所述的计算机实现的方法,其中,将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述第二内核包括:
所述第一内核将所述第一线程的上次良好架构状态从所述第一内核的错误恢复逻辑传送到所述处理器的串行通信总线;以及
通过所述串行通信总线将所述第一线程的上次良好架构状态传送到所述第二内核。
CN201310446803.5A 2012-09-27 2013-09-25 多线程处理器中的内核间线程备用 Active CN103699512B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US13/628,104 2012-09-27
US13/628,104 US9063906B2 (en) 2012-09-27 2012-09-27 Thread sparing between cores in a multi-threaded processor

Publications (2)

Publication Number Publication Date
CN103699512A CN103699512A (zh) 2014-04-02
CN103699512B true CN103699512B (zh) 2016-09-07

Family

ID=50340163

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310446803.5A Active CN103699512B (zh) 2012-09-27 2013-09-25 多线程处理器中的内核间线程备用

Country Status (3)

Country Link
US (2) US9063906B2 (zh)
CN (1) CN103699512B (zh)
DE (1) DE102013218341B4 (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2626786B1 (en) * 2010-10-05 2016-04-20 Fujitsu Limited Multicore processor system, method of monitoring control, and monitoring control program
JP5900061B2 (ja) * 2012-03-19 2016-04-06 富士通株式会社 試験方法、試験装置及びプログラム
JP6029737B2 (ja) * 2013-02-15 2016-11-24 三菱電機株式会社 制御装置
CN104216683A (zh) * 2013-05-31 2014-12-17 国际商业机器公司 利用同步多线程进行数据处理的方法及其系统
US9710273B2 (en) 2014-11-21 2017-07-18 Oracle International Corporation Method for migrating CPU state from an inoperable core to a spare core
US10831620B2 (en) * 2016-06-15 2020-11-10 International Business Machines Corporation Core pairing in multicore systems
US10885676B2 (en) * 2016-12-27 2021-01-05 Samsung Electronics Co., Ltd. Method and apparatus for modifying display settings in virtual/augmented reality
US10303569B2 (en) * 2017-07-13 2019-05-28 International Business Machines Corporation Simplified processor sparing
US10990445B2 (en) * 2017-08-04 2021-04-27 Apple Inc. Hardware resource allocation system for allocating resources to threads
KR20190037666A (ko) * 2017-09-29 2019-04-08 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10802756B1 (en) 2018-07-12 2020-10-13 Seagate Technology Llc Flash queue status polling
US10922203B1 (en) 2018-09-21 2021-02-16 Nvidia Corporation Fault injection architecture for resilient GPU computing
CN112527541A (zh) * 2019-09-19 2021-03-19 华为技术有限公司 一种确定多核处理器中故障计算核的方法及电子设备
CN110750391B (zh) * 2019-10-16 2022-08-02 中国电子科技集团公司第五十八研究所 一种基于tmr监控式的高性能抗辐照加固系统及方法
US11144369B2 (en) * 2019-12-30 2021-10-12 Bank Of America Corporation Preemptive self-healing of application server hanging threads

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101354661A (zh) * 2007-06-28 2009-01-28 英特尔公司 基于工作负载的时间特征优化os调度决策的系统和方法
CN101403982A (zh) * 2008-11-03 2009-04-08 华为技术有限公司 一种多核处理器的任务分配方法、系统及设备
CN101416163A (zh) * 2006-03-31 2009-04-22 英特尔公司 通过选择重新执行来检测瞬态错误
CN102495880A (zh) * 2011-12-05 2012-06-13 北京新媒传信科技有限公司 一种文件同步的方法和装置
CN102652309A (zh) * 2009-12-10 2012-08-29 国际商业机器公司 处理资源管理的计算机实现的方法

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6247118B1 (en) * 1998-06-05 2001-06-12 Mcdonnell Douglas Corporation Systems and methods for transient error recovery in reduced instruction set computer processors via instruction retry
US6507862B1 (en) * 1999-05-11 2003-01-14 Sun Microsystems, Inc. Switching method in a multi-threaded processor
US20020138321A1 (en) * 2001-03-20 2002-09-26 Applied Materials, Inc. Fault tolerant and automated computer software workflow
US7134002B2 (en) * 2001-08-29 2006-11-07 Intel Corporation Apparatus and method for switching threads in multi-threading processors
US7500240B2 (en) 2002-01-15 2009-03-03 Intel Corporation Apparatus and method for scheduling threads in multi-threading processors
US8146823B2 (en) * 2002-01-18 2012-04-03 Microscan Systems, Inc. Method and apparatus for rapid image capture in an image system
US7366884B2 (en) * 2002-02-25 2008-04-29 Agere Systems Inc. Context switching system for a multi-thread execution pipeline loop and method of operation thereof
US7155600B2 (en) 2003-04-24 2006-12-26 International Business Machines Corporation Method and logical apparatus for switching between single-threaded and multi-threaded execution states in a simultaneous multi-threaded (SMT) processor
JP2005284749A (ja) * 2004-03-30 2005-10-13 Kyushu Univ 並列処理コンピュータ
US7370243B1 (en) * 2004-06-30 2008-05-06 Sun Microsystems, Inc. Precise error handling in a fine grain multithreaded multicore processor
US7467325B2 (en) * 2005-02-10 2008-12-16 International Business Machines Corporation Processor instruction retry recovery
US7584332B2 (en) * 2006-02-17 2009-09-01 University Of Notre Dame Du Lac Computer systems with lightweight multi-threaded architectures
US7584346B1 (en) 2007-01-25 2009-09-01 Sun Microsystems, Inc. Method and apparatus for supporting different modes of multi-threaded speculative execution
KR101366075B1 (ko) * 2007-12-20 2014-02-21 삼성전자주식회사 멀티코어 플랫폼에서의 태스크 이동 방법 및 장치
US8615647B2 (en) * 2008-02-29 2013-12-24 Intel Corporation Migrating execution of thread between cores of different instruction set architecture in multi-core processor and transitioning each core to respective on / off power state
US20100158005A1 (en) * 2008-12-23 2010-06-24 Suvhasis Mukhopadhyay System-On-a-Chip and Multi-Chip Systems Supporting Advanced Telecommunication Functions
US8086910B1 (en) * 2010-06-29 2011-12-27 Alcatel Lucent Monitoring software thread execution
US9740549B2 (en) * 2012-06-15 2017-08-22 International Business Machines Corporation Facilitating transaction completion subsequent to repeated aborts of the transaction

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101416163A (zh) * 2006-03-31 2009-04-22 英特尔公司 通过选择重新执行来检测瞬态错误
CN101354661A (zh) * 2007-06-28 2009-01-28 英特尔公司 基于工作负载的时间特征优化os调度决策的系统和方法
CN101403982A (zh) * 2008-11-03 2009-04-08 华为技术有限公司 一种多核处理器的任务分配方法、系统及设备
CN102652309A (zh) * 2009-12-10 2012-08-29 国际商业机器公司 处理资源管理的计算机实现的方法
CN102495880A (zh) * 2011-12-05 2012-06-13 北京新媒传信科技有限公司 一种文件同步的方法和装置

Also Published As

Publication number Publication date
US9063906B2 (en) 2015-06-23
US20140089732A1 (en) 2014-03-27
US20140089734A1 (en) 2014-03-27
DE102013218341A1 (de) 2014-03-27
US9164854B2 (en) 2015-10-20
CN103699512A (zh) 2014-04-02
DE102013218341B4 (de) 2022-12-29

Similar Documents

Publication Publication Date Title
CN103699512B (zh) 多线程处理器中的内核间线程备用
CN102016808B (zh) 将检查点数据存储于非易失性存储器中
CN103370694B (zh) 重启数据处理系统
CN104094236B (zh) 防止数据丢失的系统和方法
US20120233501A1 (en) Configuration Based Service Availability Analysis of AMF Managed Systems
CN104063293B (zh) 一种数据备份方法及流计算系统
CN103778031A (zh) 一种云环境下的分布式系统多级故障容错方法
CN104919418A (zh) 用于分支预测的基于置信度阈值的相对路径执行
CN105339902B (zh) 用于版本化存储器实现的方法、装置和计算机可读介质
Lyu et al. Design and evaluation of a fault-tolerant mobile-agent system
CN107665154A (zh) 基于rdma与消息传递的可靠数据分析方法
CN104765652B (zh) 一种数据备份和数据恢复方法及装置
CN107943510A (zh) 分布式存储系统升级方法、系统、装置及可读存储介质
CN111799785B (zh) 极端灾害后配电网电力与通信协调恢复方法及系统
US20170199760A1 (en) Multi-transactional system using transactional memory logs
EP3335382B1 (en) Fault tolerance in distributed graph processing networks
CN103226499A (zh) 一种恢复内部存储器中的异常数据的方法及装置
CN107766188A (zh) 列车控制系统中的内存检测方法及装置
CN100538645C (zh) 用于执行计算机程序的方法和计算设备
CN107943617B (zh) 数据的修复方法、装置及服务器集群
CN110737504B (zh) 一种深度学习模型训练容错方法、系统、终端及存储介质
CN101206596A (zh) 复原系统操作的方法
Antola et al. High-level synthesis of data paths with concurrent error detection
CN106775468B (zh) 分布式事务的实现方法和系统
CN103559188A (zh) 元数据管理方法及管理系统

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